使用 Python 编写程序查找仅包含 1 的子字符串的数量

pythonserver side programmingprogramming

假设我们有一个二进制字符串 s。我们必须查找所有字符均为 1 的子字符串的数量。答案可能非常大,因此返回结果 mod 10^9 + 7。

因此,如果输入为 s = "1011010",则输出将为 5,因为 1. 四倍 "1" 2. 一次"11"

为了解决这个问题,我们将遵循以下步骤 −

  • m := 10^9+7

  • result := 0

  • div := 使用 '0' 分割二进制字符串

  • 对于 div 中的每个 x,执行

    • 如果 x 为空,则进行下一次迭代

    • result := result + (size of x *(size of x +1))/2 的商

  • 返回 result mod m

让我们看看下面的实现以便更好地理解 −

示例

def solve(s):
   m = 10**9+7
   result = 0
   for x in s.split('0'):
      if not x: continue
      result += (len(x)*(len(x)+1)) // 2
   return result % m
s = "1011010"
print(solve(s))

输入

"1011010"

输出

5

相关文章