Pythonで最初に回文文字列を取得するためにキャラクターを再配置するプレーヤーを見つけます
小文字の文字列Sがあり、2人のプレーヤーがゲームをプレイしているとします。ルールは次のとおりです-
-
いずれかの動きで、プレイヤーがストリングのキャラクターをシャッフルして回文ストリングを取得できる場合、プレイヤーはゲームに勝ちます。
-
ストリングからキャラクターを削除しなければならない場合、プレーヤーは勝つことができません。
両方のプレーヤーがゲームを最適にプレイし、player1がゲームを開始することを覚えておく必要があります。ゲームの勝者を見つける必要があります。
したがって、入力が「pqpppq」のような場合、最初のステップでプレーヤー1が「ppqqpp」を取得するようにキャラクターを配置してゲームに勝つため、出力はPlayer1になります。
これを解決するには、次の手順に従います-
-
l:=シーケンスのサイズ
-
freq:=サイズ26のリストを作成し、0で埋める
-
0からlの範囲のiの場合、1ずつ増やします。
-
シーケンス[i]の頻度を1増やします
-
カウント:=0
-
0から25の範囲のiの場合、実行
-
freq [i] mod 2が0でない場合、
-
count:=count + 1
-
-
-
countが0またはcountが奇数の場合、
-
1を返す
-
-
それ以外の場合
-
2を返す
-
-
例
理解を深めるために、次の実装を見てみましょう-
def who_is_the_winner(sequence): l = len(sequence) freq = [0 for i in range(26)] for i in range(0, l, 1): freq[ord(sequence[i]) - ord('a')] += 1 count = 0 for i in range(26): if (freq[i] % 2 != 0): count += 1 if (count == 0 or count & 1 == 1): return 1 else: return 2 sequence = "pqpppq" print("Player:", who_is_the_winner(sequence) )
入力
"pqpppq"
出力
Player: 1
-
Pythonで文字列の最初の100文字を取得するにはどうすればよいですか?
Pythonのslice(:)演算子を使用すると、文字列の一部を取得できます。スライス演算子には、スライスの開始とスライスの終了の2つのオペランドがあります。 substr = var[x:y] 次の例では、7番目の文字から3文字が取得されます(Pythonシーケンスはゼロベースのインデックスを使用します) >>> var="Hello how are you?" >>> str1=var[6:9] >>> str1 'how' 最初の100文字を取得するには、 >>> str1=va
-
Pythonで文字列の長さを取得するにはどうすればよいですか?
Pythonには、複合オブジェクトの長さを指定するlen()というメソッドがあります。文字列の長さを取得するには、文字列をlen()呼び出しに渡すだけです。たとえば、 print(len('abcdefghijklmnopqrstuvwxyz')) 出力 26