Python程式:查詢僅包含1的子字串個數
假設我們有一個二進位制字串s。我們需要找到所有字元都是'1'的子字串的個數。答案可能非常大,因此返回結果模10^9 + 7。
因此,如果輸入類似於s = "1011010",則輸出為5,因為1. 四個"1" 2. 一個"11"
為了解決這個問題,我們將遵循以下步驟:
m := 10^9+7
result := 0
div := 使用'0'分割二進位制字串
對於div中的每個x:
如果x為空,則跳過本次迭代
result := result + (x的長度 * (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
廣告