インタビューの質問: 文字列の回転の特定
2 つの文字列 s1 と s2 が与えられたとき、インタビュー対象者は最近、s1 がs2 の回転バージョン。回転バージョンとは、文字列が特定の位置数だけ左または右にシフトされ、その結果、同じ文字が異なる順序で含まれる新しい文字列が生成されることを指します。
簡単な解決策
この問題を解決するには、シンプルだが効果的なアプローチを使用できます。先に進む前に、両方の文字列 s1 と s2 が同じ長さであることを確認することが重要です。これが確認されたら、s1 をそれ自体と連結して、s1s1 として示される長い文字列を形成できます。
ここで、解決策の核心は、s2 が連結された文字列 s1s1 の部分文字列であるかどうかを調べることにあります。 s2 が実際に s1s1 の部分文字列である場合、これは、s2 の文字が s1s1 の連続セグメント内で見つかることを示します。したがって、本質的に文字をシフトする s1 の回転により、s2 を部分文字列として保持する新しい文字列が生成されます。
例
文字列 s1 = を考えてみましょう。 "stackoverflow" および s2 = "tackoverflows"。 s1 をそれ自体と連結すると、文字列 s1s1 = "stackoverflowstackoverflow" が得られます。 s2 は s1s1 の部分文字列であり、s1 と s2 が互いの回転バージョンであることを示しています。
この簡素化されたソリューションは、部分文字列検索アルゴリズムの強力な機能を活用し、文字列の回転を決定する効率的な方法を提供します。過度のループや操作を回避することで、問題を解決するための簡潔かつエレガントなアプローチを提供します。
以上が## 文字列 s2 は文字列 s1 の回転バージョンですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。