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

Pythonで1回削除するだけで、すべての文字の頻度が同じになるかどうかを確認します


小文字の文字列sがあるとします。 1文字削除した後、すべての文字の頻度が同じかどうかを確認する必要があります。

したがって、入力がs ="abbc"のような場合、各要素の頻度が1である文字列 "abc"を取得するために1つのbを削除できるため、出力はTrueになります。

これを解決するには、次の手順に従います-

  • 発生:=sのすべての文字とその頻度を含むマップ
  • s内のすべての文字の出現が同じである場合、
    • Trueを返す
  • sの各文字について、次のようにします
    • occurrence [char]:=occurrence [char]-1
    • s内のすべての文字の出現が同じである場合、
      • Trueを返す
    • occurrence [char]:=occurrence [char] + 1
  • Falseを返す

理解を深めるために、次の実装を見てみましょう-

from collections import defaultdict
def allSame(occurrence):
   counts = list(occurrence.values())
   return all(element == counts[0] for element in counts)
def solve(s):
   occurrence = defaultdict(int)
   for char in s:
      occurrence[char] += 1
   if allSame(occurrence):
      return True
   for char in s:
      occurrence[char] -= 1
      if allSame(occurrence):
         return True
      occurrence[char] += 1
   return False
s = "abbc"
print(solve(s))

入力

"abbc"

出力

True

  1. 文字列にすべての一意の文字が含まれているかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 sring入力が与えられた場合、文字列にすべての一意の文字が含まれているかどうかを確認する必要があります。 アプローチ ブール値の配列を作成します。ここで、インデックスiの変数フラグは、アルファベットの文字iが文字列に含まれているかどうかを示します。 この文字に2回目に遭遇したとき、文字列文字は一意ではなくなったため、すぐにfalseを返すことができます。 文字列の長さがアルファベットに表示される一意の文字数の値を超える場合も、falseを返すことができます。 文

  2. すべての同じ文字がd距離になるように文字列を再配置するPythonプログラム

    空でない文字列strと整数kが与えられた場合、同じ文字が互いに少なくとも距離kになるように文字列を再配置します。 すべての入力文字列は小文字で示されます。文字列を並べ替えることができない場合は、空の文字列を返します。 例1: str = “tutorialspoint”, k = 3 Answer: “tiotiotalnprsu” 同じ文字が少なくとも3文字離れている。 str = "aabbcc", k = 3 Answer: "abcabc" The same characters are