สมมติว่าเรามีสตริงไบนารี s เราต้องหาจำนวนสตริงย่อยที่มีเพียง "1" เท่านั้น หากคำตอบมีขนาดใหญ่เกินไป ให้แก้ไขผลลัพธ์ 10^9+7
ดังนั้น หากอินพุตเป็น s ="100111" ผลลัพธ์จะเป็น 7 เนื่องจากสตริงย่อยที่มีเพียง "1" คือ ["1", "1", "1", "1", "11" , "11" และ "111"]
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- a :=0
- นับ :=0
- สำหรับฉันในช่วง 0 ถึงขนาด s - 1 ทำ
- ถ้า s[i] เหมือนกับ "0" แล้ว
- a :=0
- มิฉะนั้น
- a :=a + 1
- นับ :=นับ + a
- ถ้า s[i] เหมือนกับ "0" แล้ว
- จำนวนคืนสินค้า
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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