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

Pythonで連続する同一ビットを削除する操作をカウントするプログラム


バイナリ文字列sがあるとします。次に、ビットを選択してその値を0から1に、またはその逆に反転する操作を考えてみましょう。 3つの同一の連続ビットがない文字列を取得するために必要な操作の最小数を見つける必要があります。

したがって、入力がs ="10011100"の場合、出力は1になります。これは、インデックス4のビットを1から0に反転して、文字列"10010100"に3つの連続する同一ビットがないようにすることができるためです。

>

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

  • l:=0、カウント:=0
  • l
  • r:=l
  • r
  • r:=r + 1
  • count:=count + floor of((r --l)/ 3)
  • l:=r
  • 返品数
  • 理解を深めるために、次の実装を見てみましょう-

    def solve(s):
       l = 0
       count = 0
       while l < len(s):
          r = l
          while r < len(s) and s[r] == s[l]:
             r += 1
          count += (r - l) // 3
          l = r
       return count
    
    s = "10011100"
    print(solve(s))

    入力

    "10011100"
    

    出力

    1

    1. 連続する1’のないバイナリ文字列の数をカウントするPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −正の整数Nが与えられているので、文字列に連続する1が存在しないように、長さNで使用可能なすべての可能な個別のバイナリ文字列をカウントする必要があります。 次に、以下の実装のソリューションを見てみましょう- 例 # count the number of strings def countStrings(n):    a=[0 for i in range(n)]    b=[0 for i in range(n)]    a[0] = b[0]

    2. 配列内の反転をカウントするPythonプログラム

      この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −リストが表示されます。必要な反転をカウントして表示する必要があります。 反転カウントは、配列をソートするために必要なステップ数をカウントすることによって取得されます。 次に、以下の実装のソリューションを見てみましょう- 例 # count def InvCount(arr, n):    inv_count = 0    for i in range(n):       for j in range(i + 1, n):