使用Python查找只有1s的子字符串数的程序

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

因此,如果输入类似于 s = "1011010",那么输出将是 5,因为 1. 四次 "1" 2. 一次 "11"

为了解决这个问题,我们将按照以下步骤操作 -

  • 米:= 10^9+7

  • 结果:= 0

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

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

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

    • 结果 := 结果 + (x 的大小 *(x 的大小 +1))/2 的商

  • 返回结果 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

猜你喜欢