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

Pythonで文字列を分割する方法の数を見つけるためのプログラム


バイナリ文字列sがあるとすると、sを3つの空でない文字列s1、s2、s3に分割して(s1連結s2連結s3 =s)することができます。文字数「1」がs1、s2、およびs3で同じになるように、sを分割できる方法の数を見つける必要があります。答えは非常に大きい可能性があるため、答えmod 10 ^ 9+7を返します。

したがって、入力がs ="11101011"の場合、出力は2になります。これは、「11 | 1010|11」と「11|101|011」のように分割できるためです。

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

  • count:=sの1の数を数える
  • m:=10 ^ 9 + 7
  • ans:=サイズ2の配列で、0で埋めます
  • count mod 3が0と同じでない場合、
    • 0を返す
  • それ以外の場合、カウントが0と同じ場合、
    • return(nCrはs -1のサイズ、rは2)mod m
  • 左:=0
  • 右:=sのサイズ-1
  • cum_s:=0、cum_e:=0
  • cum_s <=count/3の商またはcum_e<=count / 3の商、do
    • s[left]が"1"と同じ場合、
      • cum_s:=cum_s + 1
    • s[right]が"1"と同じ場合、
      • cum_e:=cum_e + 1
    • cum_sがcount/3の商と同じ場合、
      • ans [0]:=ans [0] + 1
    • cum_eがcount/3の商と同じ場合、
      • ans [1]:=ans [1] + 1
    • 左:=左+ 1
    • right:=right-1
  • return(ans [0] * ans [1])mod m

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

def solve(s):
   count = s.count("1")
   m = 10**9 + 7
   ans = [0, 0]
   if count % 3 != 0:
      return 0
   elif count == 0:
      return comb(len(s)-1,2) % m
   left = 0
   right = len(s)-1
   cum_s = 0
   cum_e = 0
   while(cum_s <= count//3 or cum_e <= count//3):
      if s[left] == "1":
         cum_s+=1
      if s[right] == "1":
         cum_e+=1
      if cum_s == count//3:
         ans[0]+=1
      if cum_e == count//3:
         ans[1]+=1
      left += 1
      right -= 1
   return (ans[0]*ans[1]) % m
s = "11101011"
print(solve(s))

入力

"11101011"

出力

2

  1. Pythonで文字列の長さを見つける(3つの方法)

    文字列は、一連のUnicode文字であるPythonです。一度宣言すると、変更できません。この記事では、文字列の長さを見つけるためのさまざまな方法を説明します。 len()の使用 これが最も簡単な方法です。ここでは、len()という名前のライブラリ関数を使用します。文字列はパラメータとして関数に渡され、画面内の文字数を取得します。 例 str ="Tutorials" print("Length of the String is:", len(str)) 出力 上記のコードを実行すると、次の結果が得られます- Length of the Strin

  2. 文字列内のミラー文字を検索するPythonプログラム

    ユーザー入力文字列とその位置からの位置を指定すると、文字をアルファベット順に文字列の長さまでミラーリングする必要があります。この操作では、「a」を「z」に、「b」を「y」に、「c」を「x」に、「d」を「w」に変更します。これは、最初の文字が最後になることを意味します。オン。 Inpu t: p = 3 Input string = python Output : pygslm アルゴリズム Step 1: Input the string and position from we need to mirror the characters. Step 2: Creating a s