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

Pythonの特定の文字列で最小数のスワップで1をグループ化するプログラム


0と1を含むバイナリ文字列input_strが与えられたとします。私たちのタスクは、指定された文字列の1を交換することにより、0と1をグループ化することです。最小限の数のスワップ操作を実行する必要があり、その値を返す必要があります。覚えておくべきことの1つは、隣接する値のみを交換できることです。

したがって、入力がinput_str =10110101のような場合、出力は4

になります。

スワップは次のようになります-

10110101->01110101->01111001->01111010->01111100

スワップの総数:4。

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

  • one:=1が配置されているinput_strの位置を含む新しいリスト
  • mid:=(1/2のサイズ)のフロア値
  • res:=0
  • 0から1のサイズのiの場合は、
    • res:=res + | one [mid] --one [i] | -| mid --i |
  • res <0の場合、
    • 0を返す
  • それ以外の場合、
    • return res

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

def solve(input_string):
   one = [i for i in range(len(input_string)) if input_string[i] == "1"]
   mid = len(one) // 2
   res = 0
   for i in range(len(one)):
      res += abs(one[mid] - one[i]) - abs(mid - i)
   return 0 if res < 0 else res

print(solve('10110101'))

入力

'10110101'

出力

4

  1. 与えられた範囲内の奇数因子を持つ要素の数のためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −範囲が与えられているので、範囲内の奇数因子の数を見つける必要があります。 アプローチ 私たち全員が知っているように、すべての完全な正方形には、範囲内に奇数の因子があります。そこで、ここでは完全な平方の数を計算します。 mとnは両方とも包括的であるため、nが完全な正方形である場合のエラーを回避するために、式でn-1を使用します。 次に、以下の実装を見てみましょう- 例 # count function def count(n, m):    return int(m**0.5) -

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

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