Java 查找给定基字符串中字符串的最长子字符串匹配
我在找逻辑,你能不能请任何人帮我一下 程序将接受两个字符串输入。第一个是基本字符串,第二个是搜索字符串。程序需要打印匹配基字符串的搜索字符串的最长子字符串 输入:Java 查找给定基字符串中字符串的最长子字符串匹配,java,string,Java,String,我在找逻辑,你能不能请任何人帮我一下 程序将接受两个字符串输入。第一个是基本字符串,第二个是搜索字符串。程序需要打印匹配基字符串的搜索字符串的最长子字符串 输入: Base String :"YHKKGFFADGIJJ" Search String:"ADGFFF" Output:"ADG" 尝试实现此解决方案:我将使用String.contains,从完整的搜索字符串开始,尝试更短的子字符串,直到contains返回true。因为所有字符串都包含空字符串,所以最终会出现这种情况。搜索匹配项
Base String :"YHKKGFFADGIJJ"
Search String:"ADGFFF"
Output:"ADG"
尝试实现此解决方案:我将使用String.contains,从完整的搜索字符串开始,尝试更短的子字符串,直到contains返回true。因为所有字符串都包含空字符串,所以最终会出现这种情况。搜索匹配项有多种算法。您可以修改它们以返回最长的部分匹配。一个简单的算法在输入端移动一个模式窗口,并从左到右检查窗口中的每个字符。你可以记住最长的部分匹配。选择您最喜欢的匹配算法并修改它以获得良好的时间复杂度。感谢您的回复。但是您的代码在某些测试用例中失败。基本字符串=FHKKADGFFJJJ搜索字符串=JJADGFF预期输出:ADG您的输出:null@SiddeshHK你可以试试新的版本
String searchLongestPattern (String base, String pattern)
{
for (int endOffset = pattern.length() ; endOffset >= 1 ; endOffset--)
{
String match = null;
if (base.indexOf(match = pattern.substring(0, endOffset)) != -1 || base.indexOf(match = pattern.substring(pattern.length() - endOffset + 1)) != -1)
{
return match;
}
}
return null;
}