文字列を効率的に処理する方法を理解することは、コードのパフォーマンスを大幅に向上させることができる基本的なプログラミング作業です。回転された文字列から目的の文字列を生成するために必要な最小回転数を見つけることは、文字列操作における興味深い課題です。テキスト処理、暗号化、データ圧縮などの状況では、多くの場合、この問題が発生します。
文字列が右に一定量回転された状況を考えてみましょう。目標は、文字列を元の形式に戻すために必要な最小回転数を見つけることです。この問題の解決策を見つけることで、文字列の構造についてさらに詳しく学び、有益な情報を得ることができます。
この記事では、回転された文字列から元の文字列を返すために必要な最小回転数を決定する 2 つの方法を検討します。これらのテクノロジーを実践するには、可読性と使いやすさで知られる柔軟で人気のあるプログラミング言語である Python が使用されます。
###方法###
方法 1: ブルート フォースを使用する
Python で最小回転数を検索して実際の文字列を取得する手順は次のとおりです -
ステップ 1- 2 つの文字列を入力として受け取る関数を作成します。
ステップ 2 - 必要な最小スピン数を追跡するために、初期値が無限大の変数を作成します。
ステップ 3 - 0 から最初の文字列の長さまで、可能な値を繰り返し処理します。
ステップ 4- 最初の文字列は、現在のインデックス位置によって回転される必要があります。これにより、2 番目の文字列と回転された文字列が等しいことが検証されます。その場合は、変数の値を現在の最小値と現在のインデックスの間の最小値に変更します。
ステップ 5- 最小回転変数がまだ無限大に設定されている場合は、-1 が返されます (最初の文字列を回転して 2 番目の文字列を取得できないことを示します)。
ステップ 6 - そうでない場合は、最小回転変数を返します。
###例### リーリー ###出力### リーリー方法 2: ユーザー定義関数で while ループを使用する 明示的な文字列のローテーションを行うのではなく、連結された文字列を使用して 2 番目の文字列が存在することを確認することが機能します。 2 つの文字列の長さが異なるために、最初の文字列を回転しても 2 番目の文字列を取得できない場合は、-1 を返します。 2 番目の文字列が連結された文字列の部分文字列であるかどうかを判断することで、2 番目の文字列を最初の文字列から分離するのに必要な回転数を把握できます。最小回転数を決定するには、2 番目の文字列が部分文字列として見つかった場合、インデックスを計算し、それを最初の文字列の長さで割ります。このメソッドの時間計算量は O(n) です。ここで、n は最初の文字列の長さです。
###アルゴリズム###- 最初の文字列をそれ自体と連結して、一時的な文字列を作成します。
ステップ 4- 2 番目の文字列が一時文字列の部分文字列である場合は、必要な最小回転数を一時文字列内の 2 番目の文字列のインデックスで割った値を返します。最初の文字列の長さを取得します。 .
ステップ 5- そうでない場合は、-1 を返します。 ###例### リーリー ###出力### リーリー ###結論は### この記事では、特定の文字列を別の文字列に変換するために必要な最小回転数を計算する 2 つの方法を検討しました。 2 番目の方法では、連結された文字列を使用して 2 番目の文字列が存在するかどうかを確認します。一方、総当り方式では、最初の文字列を実行可能な位置数ごとに回転します。入力のサイズと必要な効率に応じて、Python でこの問題を解決するための最適な戦略を選択できます。これらのメソッドのおかげで、指定された文字列からターゲット文字列を抽出するために必要な最小回転数を計算できるようになりました。
以上がPython プログラム: 実際の文字列を取得するために必要な最小回転数を見つけますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。