在 Python 中計算二進位制字串中包含全 1 子字串數量的程式


假設我們有二進位制字串 s。我們必須找到僅包含 "1" 的子字串的數量。如果答案太大,則對結果取 10^9+7 的模。

因此,如果輸入如下 s = "100111",則輸出將為 7,因為僅包含 "1" 的子字串為 ["1", "1", "1", "1", "11", "11" 和 "111"]

要解決此問題,我們將遵循以下步驟 −

  • a := 0
  • count := 0
  • 對於 i 的範圍是 0 到 s 的大小 - 1,執行
    • 如果 s[i] 與 "0" 相同,則
      • a := 0
    • 否則,
      • a := a + 1
      • count := count + a
  • 返回 count

示例

讓我們看看以下實現以獲得更好的理解 −

def solve(s):
   a = 0
   count = 0
   for i in range(len(s)):
      if s[i] == "0":
         a = 0
      else:
         a += 1
         count += a
   return count

s = "100111"
print(solve(s))

輸入

"100111"

輸出

7

更新於: 2021 年 10 月 18 日

469 次瀏覽量

開啟您的 職業生涯

完成課程後獲得認證

開始
廣告