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

文字列の両方の半分がPythonで少なくとも1つの異なる文字を持っているかどうかを確認します


小文字の文字列があるとします。文字列を中央から分割できるかどうかを確認する必要があります。これにより、2つの辺の間に少なくとも1文字の違いがある2つの半分が得られます。異なる文字または各文字の異なる頻度を保持する場合があります。文字列が奇数の長さの文字列である場合は、中央の要素を無視して、残りの要素を確認してください。

したがって、入力がs ="helloohekk"の場合、出力は "helloohekk"としてTrueになるため、左側は "hello"、右側は "ohekk"、左右は異なります。

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

  • left_freq:=空のマップ
  • right_freq:=空のマップ
  • n:=sのサイズ
  • 範囲0から(n / 2)-1の商のiの場合、do
    • left_freq [s [i]]:=left_freq [s [i]] + 1
  • (n / 2)からn-1の範囲の商のiの場合、do
    • right_freq [s [i]]:=right_freq [s [i]] + 1
  • sの各文字について、次のようにします
    • right_freq[char]がleft_freq[char]と同じでない場合、
      • Trueを返す
  • Falseを返す

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

from collections import defaultdict
def solve(s):
   left_freq = defaultdict(int)
   right_freq = defaultdict(int)
   n = len(s)
   for i in range(n//2):
      left_freq[s[i]] += 1
   for i in range(n//2, n):
      right_freq[s[i]] += 1
   for char in s:
      if right_freq[char] != left_freq[char]:
         return True
   return False
s = "helloohekk"
print(solve(s))

入力

"helloohekk"

出力

True

  1. 指定された文字列がパングラムであるかどうかを確認するPythonプログラム

    この記事では、特定の問題ステートメントを解決するための解決策とアプローチについて学習します。 問題の説明 文字列入力が与えられた場合、その文字列がパングラムであるかどうかを確認するPythonプログラムを生成する必要があります。 パングラムは、英語のアルファベットコレクションのすべての文字を含む文/一連の単語です。 では、問題を解決する方法を見てみましょう 入力文字列に存在する各文字が、手動で宣言するアルファベットセットに属しているかどうかをチェックするループを使用します。 上記のアプローチの実装は、-によって与えられます。 例 import string def ispangram

  2. Pythonで文字列に少なくとも1つの文字と1つの数字があるかどうかを確認するにはどうすればよいですか?

    Pythonでこれを確認する最も簡単な方法は、正規表現を使用することです。指定された文字列に少なくとも1つの文字と1つの数字があるかどうかを確認するために、re.match(regex、string)を使用します。 例 import re print(bool(re.match('^(?=.*[0-9]$)(?=.*[a-zA-Z])', 'hasAlphanum123'))) print(bool(re.match('^(?=.*[0-9])(?=.*[a-zA-Z]$)', 'some string'))) 出力 True F