2017-07-21 74 views
-2

我正在嘗試查找邏輯,能否請任何人幫助我。查找給定基準字符串中字符串的最長子字符串匹配

該程序將採取兩個字符串inputs.first是基本字符串,第二個是搜索字符串。程序需要打印在基本字符串中匹配的搜索字符串的最長子字符串。

輸入:

Base String :"YHKKGFFADGIJJ" 
Search String:"ADGFFF" 

Output:"ADG" 
+1

我會用'String.contains()',與全搜索字符串開始和嘗試更短的子串,直到'包含'返回true。它最終會因爲所有字符串都包含空字符串。 –

+0

搜索匹配有多種算法。您可以修改它們中的每一個以返回最長的部分匹配。天真的算法在輸入上移動模式窗口,並從左到右檢查窗口的每個字符。你可以記住最長的部分匹配。選擇您最喜歡的匹配算法,並對其進行修改以保證時間複雜度。 – Zabuza

回答

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

感謝您的迴應。但是你的代碼在某些測試用例上失敗了。 Base String \t =「fhkkkADGFFjjj」搜索字符串=「JJADGFF」預期輸出:「ADG」您輸出Put:null –

+0

@SiddeshHK您可以嘗試新版本 – marsouf