Pythonでのダブル、リバース、スワップ後のパターン
数値nがあるとすると、シーケンスからn番目の値を見つけることができません。シーケンスは以下のようになります-
- xxy
- xxyxxy
- yxxyxx
- xyyxyy
- xyyxyyxyyxyy
- ...
次の値を生成するには、最初の項としてxxyから始めて、これらのルールに従う必要があります-
-
パターンの先頭に来たら、パターンを2倍にします(文字列をそれ自体と連結します)。
-
最後の操作が2倍になったとき、それを逆にします。
-
最後の操作が逆になったら、すべてのxをysと交換し、その逆も同様です。
-
これらの手順を繰り返します。
したがって、入力がn =5の場合、出力は「yyxyyxyyxyyx」になります
これを解決するには、次の手順に従います-
- i:=0
- ret:="xxy"
- i
- i mod 3が0と同じ場合、
- ret:=ret + ret
- それ以外の場合、i mod 3が1と同じ場合、
- ret:=インデックス0からend-1までのretのサブ配列
- それ以外の場合、
- new_stringy:=空白の文字列
- retの各cについて、
- cが"x"と同じ場合、
- new_stringy:=new_stringy concatenate "y"
- それ以外の場合、
- new_stringy:=new_stringy concatenate "x"
- cが"x"と同じ場合、
- ret:=new_stringy
- i:=i + 1
- i mod 3が0と同じ場合、
理解を深めるために、次の実装を見てみましょう-
例
class Solution: def solve(self, s): i = 0 ret = "xxy" while i < s: if i % 3 == 0: ret += ret elif i % 3 == 1: ret = ret[::-1] else: new_stringy = "" for c in ret: if c == "x": new_stringy += "y" else: new_stringy += "x" ret = new_stringy i += 1 return ret ob = Solution() print(ob.solve(5))
入力
5
出力
yyxyyxyyxyyx
-
Pythonでパターンを印刷する方法は?
Pythonのパターンは、ネストされたforループを使用して印刷できます。外側のループは行数を反復処理するために使用され、内側のループは列数を処理するために使用されます。印刷ステートメントは、要件に応じてさまざまなパターンを形成するように変更されます。 パターンには、星型、数字型、アルファベット型があります。パターンは、さまざまな形、三角形、ピラミッドなどにすることができます。 例 これらのパターンはすべて、これらの異なるパターンを形成する変更されたprintステートメントを含むforループを使用して印刷できます。 これらのパターンの印刷の基本的な考え方は同じですが、わずかな違いが
-
Pythonで文字列を逆にする
文字の配列があるとします。追加のスペースを使用せずに文字列を反転する必要があります。したがって、文字列が[H、E、L、L、O]のような場合、出力は[O、L、L、E、 H] これを解決するには、次の手順に従います- 2つのポインタを使用して、開始=0および終了=文字列の長さ– 1 最初と最後の文字を入れ替える 開始を1増やし、終了を1減らします 例 理解を深めるために、次の実装を見てみましょう- class Solution(object): def reverseString(self, s): "&q