22
指定された文字列で最長の回文を返す関数を記述します
たとえば、文字列「abaccddccefe」の「ccddcc」 私は解決策を考えましたが、O(n ^ 2)時間で実行されます アルゴ1: 手順:そのブルートフォースメソッド i = 1からiまでのarray.length未満の2 forループがある j = i + 1からarray.length未満のjまでの -1 このようにして、配列から可能なすべての組み合わせの部分文字列を取得できます 文字列が回文かどうかをチェックする回文関数を持っている したがって、すべての部分文字列(i、j)についてこの関数を呼び出します。回文式の場合は、文字列変数に格納します。 次の回文の部分文字列が見つかり、それが現在のものよりも大きい場合は、現在のものと置き換えます。 最後に、文字列変数に答えがあります 問題:1.このアルゴはO(n ^ 2)時間で実行されます。 アルゴ2: 文字列を逆にして別の配列に格納します 次に、両方の配列の間で最大の一致する部分文字列を見つけます しかし、これもO(n ^ 2)時間で実行されます より良い時間に実行されるアルゴを想像できますか?可能であればO(n)時間
101
algorithm
palindrome