Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 查找给定基字符串中字符串的最长子字符串匹配_Java_String - Fatal编程技术网

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;
}