Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

ตรวจสอบว่าสตริงมี 1 หรือ 0 ติดกัน m ตัวใน Python


สมมติว่าเรามีสตริงไบนารี 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
  • คืนค่า 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