使用 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