Pythonで変更した後の文字列の最終状態
文字列Sがあるとします。長さはnです。これらのn個のボックスは互いに隣接しており、位置iの文字Rは、i番目のボックスが右に向かって押されていることを表します。同様に、位置iのLは、i番目のボックスが左に向かって押されていることを表します(ドット'。')。空のスペースを示します。初期構成から開始して、単位ごとに、右側に押されたボックスは次のボックスを右に押すことができ、左側にも同じアクションを適用できます。これ以上の動きが不可能になったときに、すべてのボックスの最終的な位置を見つける必要があります。
したがって、入力がR..R ... L。の場合、出力はRRRRR.LLになります。
これを解決するには、次の手順に従います-
- N:=文字列のサイズ
- movement:=サイズNの配列、0で埋める
- m:=0
- 0からNの範囲のiについては、
- string[i]が'R'と同じ場合、
- m:=N
- それ以外の場合、string[i]が'L'と同じ場合、
- m:=0
- それ以外の場合、
- m:=最大m-1、0
- movement [i]:=motion [i] + m
- string[i]が'R'と同じ場合、
- m:=0
- 範囲N-1から-1のiの場合、1ずつ減少します。
- string[i]が'L'と同じ場合、
- m:=N
- それ以外の場合、string[i]が'R'と同じ場合、
- m:=0
- それ以外の場合、
- m:=最大m-1、0
- movement [i]:=Movement [i] --m
- string[i]が'L'と同じ場合、
- returnは、mが0の場合はドットを追加し、それ以外の場合はm> 0の場合は「R」、それ以外の場合は移動中のすべての要素mに対して「L」を追加して文字列を作成します。
理解を深めるために、次の実装を見てみましょう-
def get_final_pos(string): N = len(string) movement = [0] * N m = 0 for i in range(0, N): if string[i] == 'R': m = N elif string[i] == 'L': m = 0 else: m = max(m - 1, 0) movement[i] += m m = 0 for i in range(N - 1, -1, -1): if string[i] == 'L': m = N elif string[i] == 'R': m = 0 else: m = max(m - 1, 0) movement[i] -= m return "".join('.' if m == 0 else 'R' if m > 0 else 'L' for m in movement) print(get_final_pos('R..R...L.'))
入力
'R..R...L.'
出力
RRRRR.LL.
-
指定された文字列がパングラムであるかどうかを確認するPythonプログラム
この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列入力が与えられた場合、その文字列がパングラムであるかどうかを確認するPythonプログラムを生成する必要があります。 パングラムは、英語のアルファベットコレクションのすべての文字を含む文/一連の単語です。 では、問題を解決する方法を見てみましょう 入力文字列に存在する各文字が、手動で宣言するアルファベットセットに属しているかどうかをチェックするループを使用します。 上記のアプローチの実装は、-によって与えられます。 例 import string def ispangram
-
Python文字列-基本的な文字列操作の概要
文字列は、Pythonの基本的なデータ型の1つです。 Python文字列は、文字、数字、およびその他の特殊文字で構成される任意の数の文字の組み合わせです。このチュートリアルでは、さまざまなシナリオで使用するために、それらを作成、操作、およびフォーマットする方法を学習します。 Pythonで新しい文字列を作成する 新しいPython文字列を作成するには、一重引用符または二重引用符で囲まれた文字のシーケンスを宣言する必要があります。三重引用符は、複数行の長さの文字列にも使用されます。 double_quotes = My name is John! single_quotes = My nam