สมมติว่าเรามีสตริงไบนารี s และอีกค่าหนึ่งคือ m เราต้องตรวจสอบว่าสตริงนั้นมีค่า m ติดต่อกันเป็น 1 หรือ m ติดต่อกันเป็น 0 หรือไม่
ดังนั้น หากอินพุตเป็น s ="1110111000111", m =3 เอาต์พุตจะเป็น True เนื่องจากมี 0 และ 1 ติดต่อกันสามรายการ
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- str_size :=ขนาดของ s
- count_0 :=0, count_1 :=0
- สำหรับฉันในช่วง 0 ถึง str_size - 2 ทำ
- ถ้า s[i] เหมือนกับ '0' แล้ว
- count_1 :=0
- count_0 :=count_0 + 1
- มิฉะนั้น
- count_0 :=0
- count_1 :=count_1 + 1
- ถ้า count_0 เหมือนกับ m หรือ count_1 เหมือนกับ m แล้ว
- คืนค่า True
- ถ้า s[i] เหมือนกับ '0' แล้ว
- คืนค่าเท็จ
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def solve(s, m): str_size = len(s) count_0 = 0 count_1 = 0 for i in range(0, str_size - 1): if (s[i] == '0'): count_1 = 0 count_0 += 1 else : count_0 = 0 count_1 += 1 if (count_0 == m or count_1 == m): return True return False s = "1110111000111" m = 3 print(solve(s, m))
อินพุต
"1110111000111", 3
ผลลัพธ์
True