私は論理を見つけようとしています。与えられた基底文字列中の文字列の最長部分文字列一致を見つける
プログラムは2つの文字列入力を受け取ります。最初は基本文字列、2番目は検索文字列です。プログラムは、基本文字列に一致する検索文字列の最長部分文字列を出力する必要があります。
入力:
Base String :"YHKKGFFADGIJJ"
Search String:"ADGFFF"
Output:"ADG"
私は論理を見つけようとしています。与えられた基底文字列中の文字列の最長部分文字列一致を見つける
プログラムは2つの文字列入力を受け取ります。最初は基本文字列、2番目は検索文字列です。プログラムは、基本文字列に一致する検索文字列の最長部分文字列を出力する必要があります。
入力:
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;
}
応答に感謝します。しかし、あなたのコードはいくつかのテストケースでは失敗しています。ベースストリング\t = "fhkkkADGFFjjj"検索文字列= "JJADGFF"期待される出力: "ADG"あなたの出力Put:null –
@SiddeshHK新しいバージョンを試すことができます – marsouf
私は 'String.containsを()'使用することになり、 '含まれるまで、完全な検索文字列で開始し、これまでの短い部分文字列を試してみてください'trueを返します。すべての文字列には空の文字列が含まれているため、最終的になります。 –
マッチを検索するアルゴリズムは複数あります。それらのそれぞれを変更して、最も長い部分一致を返すことができます。素朴なアルゴリズムはパターンウィンドウを入力にシフトし、ウィンドウの各文字を左から右にチェックします。あなたはちょうど最も長い部分一致を思い出すことができます。好きなマッチングアルゴリズムを選択し、時間の複雑さを考慮して変更してください。 – Zabuza