สมมติว่าเรามีสตริงไบนารี s และค่าอีกค่า m เราต้องตรวจสอบว่าสตริงมี 1 ติดกัน m ตัว หรือ 0 ติดกัน m ตัว
เช่น ถ้าอินพุตเป็น s = "1110111000111", m = 3 ผลลัพธ์จะเป็น True เนื่องจากมี 0 ติดกัน 3 ตัว และ 1 ติดกัน 3 ตัว
ในการแก้ปัญหานี้ เราจะทำตามขั้นตอนดังนี้:
- str_size := ขนาดของ s
- count_0 := 0, count_1 := 0
- สำหรับ i ในช่วง 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' แล้ว
- คืนค่า False
ลองดูการนำไปใช้ดังต่อไปนี้เพื่อเข้าใจได้ดียิ่งขึ้น:
ตัวอย่าง
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