我正在嘗試查找邏輯,能否請任何人幫助我。查找給定基準字符串中字符串的最長子字符串匹配
該程序將採取兩個字符串inputs.first是基本字符串,第二個是搜索字符串。程序需要打印在基本字符串中匹配的搜索字符串的最長子字符串。
輸入:
Base String :"YHKKGFFADGIJJ"
Search String:"ADGFFF"
Output:"ADG"
我正在嘗試查找邏輯,能否請任何人幫助我。查找給定基準字符串中字符串的最長子字符串匹配
該程序將採取兩個字符串inputs.first是基本字符串,第二個是搜索字符串。程序需要打印在基本字符串中匹配的搜索字符串的最長子字符串。
輸入:
Base String :"YHKKGFFADGIJJ"
Search String:"ADGFFF"
Output:"ADG"
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;
}
感謝您的迴應。但是你的代碼在某些測試用例上失敗了。 Base String \t =「fhkkkADGFFjjj」搜索字符串=「JJADGFF」預期輸出:「ADG」您輸出Put:null –
@SiddeshHK您可以嘗試新版本 – marsouf
我會用'String.contains()',與全搜索字符串開始和嘗試更短的子串,直到'包含'返回true。它最終會因爲所有字符串都包含空字符串。 –
搜索匹配有多種算法。您可以修改它們中的每一個以返回最長的部分匹配。天真的算法在輸入上移動模式窗口,並從左到右檢查窗口的每個字符。你可以記住最長的部分匹配。選擇您最喜歡的匹配算法,並對其進行修改以保證時間複雜度。 – Zabuza