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

数値のバイナリ表現がPythonのブロックで0と1の数が等しいかどうかを確認します


数値がnumであるとすると、numのバイナリ表現に0と1の連続するブロックの数が同じであるかどうかを確認する必要があります。 0とすべて1の数は、0と1のブロック数とは見なされないことに注意する必要があります。

したがって、入力がnum =455のような場合、この数値の2進表現は111000111であるため、出力はTrueになります。

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

  • bin_form:=numのバイナリ形式
  • one_count:=新しいセット
  • count:=1
  • 0からbin_form-1のビット数までの範囲のiの場合、do
    • bin_form[i]がbin_form[i+ 1]と同じ場合、
      • count:=count + 1
    • それ以外の場合、
      • カウントをone_countに挿入
      • count:=1
  • one_countのサイズが1と同じ場合、
    • Trueを返す
  • Falseを返す

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

サンプルコード

def solve(num):
   bin_form = bin(num).replace("0b", "")
   one_count = set()
   count = 1
 
   for i in range(len(bin_form)-1):
      if bin_form[i] == bin_form[i + 1]:
         count += 1
      else:
         one_count.add(count)
         count = 1
 
   if len(one_count) == 1:
      return True
   return False
 
num = 455
print(solve(num))
>

入力

455

出力

True

  1. 2つの数値の2進表現がアナグラムであるかどうかをチェックするPythonプログラム。

    与えられた2つの数字。私たちの仕事は、それらがバイナリ表現でお互いのアナグラムであるかどうかを確認することです。カウンター(反復可能)メソッドと辞書比較を使用して、Pythonでこの問題をすばやく解決できます。 例 Input: a = 8, b = 16 Output : Yes Binary representations of both numbers have same 0s and 1s. アルゴリズム Step 1 : Given two numbers. Step 2 : Convert both number into its binary using bin() fu

  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