C++ は、文字列の部分文字列 (長さが 1 より大きい) の各文字が同じである場合、それを等価部分文字列と呼ぶことを認識します。文字列 S 内で最大の長さを持つ同等の部分文字列を見つけるアルゴリズムを設計してみてください。文字列 S 内に同等の部分文字列がない場合は、情報 n... を出力します。

単純なトラバーサル アルゴリズムを使用できます。最初に文字列 S をループし、2 つのポインター i と j を使用し、S[i] == S[j]、i++、j-- の場合、それぞれ最初と最後からトラバースを開始します。 i>j までトラバースを続けます。この時点で、i から j までの文字列が同等のサブストリングであると判断でき、サブストリングの長さを記録し、i、j を先頭ポインタと末尾ポインタとしてリセットし、トラバースを続けます。すべての等価な部分文字列の最大長を見つけるだけで十分です。最大長が 0 の場合は、文字列 S に等価な部分文字列が存在しないことを意味します。

おすすめ

転載: blog.csdn.net/weixin_35755640/article/details/129551553