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

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

  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

  2. Pythonで文字列の長さを取得するにはどうすればよいですか?

    Pythonには、複合オブジェクトの長さを指定するlen()というメソッドがあります。文字列の長さを取得するには、文字列をlen()呼び出しに渡すだけです。たとえば、 print(len('abcdefghijklmnopqrstuvwxyz')) 出力 26