Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonの文字列スライスで文字列を回転させる方法

文字列が与えられたとき、その文字列を2つの方向にスライスして回転させるのが本記事の目的です。1つは時計回り(右回転)、もう1つは反時計回り(左回転)です。

1. 与えられた文字列を d 要素分だけ左(反時計回り)に回転させます(d <= n)。

2. 与えられた文字列を d 要素分だけ右(時計回り)に回転させます(d <= n)。

実行例

Input: string = "pythonprogram"
d = 2
Output:
Left Rotation: thonprogrampy
Right Rotation: ampythonprogr

アルゴリズム

Step 1: 文字列を入力する。
Step 2: 文字列を2つの部分に分割する。
        左回転の場合:Lfirst = str[0 : d]、Lsecond = str[d :]
        右回転の場合:Rfirst = str[0 : len(str)-d]、Rsecond = str[len(str)-d : ]
Step 3: 分割した2つの部分を「後半 + 前半」の順に連結する。

仕組みのポイント

Pythonのスライス記法 str[a:b] を使うと、インデックス a から b-1 までの部分文字列を簡単に取り出せます。この性質を利用して、文字列を「先頭からd番目まで」と「d番目以降」の2つに分割し、順序を入れ替えて連結することで回転を実現しています。

  • 左回転:先頭の d 文字を末尾へ移動させる(Lsecond + Lfirst)
  • 右回転:末尾の d 文字を先頭へ移動させる(Rsecond + Rfirst)

サンプルコード

def rotate(input, d):
    # 文字列を左右回転用に2つの部分へスライス
    Lfirst = input[0 : d]
    Lsecond = input[d :]
    Rfirst = input[0 : len(input)-d]
    Rsecond = input[len(input)-d : ]
    print("Left Rotation : ", (Lsecond + Lfirst))
    print("Right Rotation : ", (Rsecond + Rfirst))

# ドライバープログラム
if __name__ == "__main__":
    s = input("Enter String ::>")
    d = 2
    rotate(s, d)

出力結果

Enter String ::> pythonprogram
Left Rotation: thonprogrampy
Right Rotation: ampythonprogr

このように、Pythonのスライスと文字列連結を組み合わせるだけで、ループ処理を書かずに簡潔に文字列の回転を実装できます。ぜひ実際にコードを動かして挙動を確認してみてください。

  1. Pythonで配列を右にk回転させる方法【スライスで簡単実装】

    配列の右回転とは? 配列Aが与えられたとき、それを右にkステップ回転することを考えます。例えば、配列 A = [5, 7, 3, 6, 8, 1, 5, 4]、k = 3 の場合、出力は [1, 5, 4, 5, 7, 3, 6, 8] となります。 各ステップでの配列の変化は以下の通りです。 1回転後:[4, 5, 7, 3, 6, 8, 1, 5] 2回転後:[5, 4, 5, 7, 3, 6, 8, 1] 3回転後:[1, 5, 4, 5, 7, 3, 6, 8] つまり、1回転ごとに末尾の要素が先頭に移動し、残りの要素が一つずつ後ろにずれていくイメージです。 解法のアプローチ こ

  2. Pythonのcasefold()メソッドとは?文字列の小文字変換と比較方法を解説

    Pythonのcasefold()は、文字列内の英字をすべて小文字に変換するためのメソッドです。lower()と似ていますが、より積極的な変換を行う点が特徴で、ドイツ語の「ß」が「ss」に変換されるなど、国際化対応において強力な働きをします。2つの文字列に対してcasefold()を適用すれば、大文字・小文字の違いを無視して値を一致させることができます。そのため、ユーザー入力の比較や検索処理などで非常に役立ちます。casefold()の基本的な使い方次の例では、文字列にcasefold()を適用し、すべて小文字に変換された結果を出力しています。コード例string = BestTutorial