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

โปรแกรมตรวจสอบว่าสตริงบाइनารีมี segment ของ 1 ได้มากสุด 1 ช่วงหรือไม่ด้วย Python


สมมติว่าเรามีสตริงบाइनารี s (ไม่มีศูนย์นำหน้า) เราต้องตรวจสอบว่า s มีช่วงติดกันของ 1 ได้มากสุด 1 ช่วงหรือไม่

เช่น s = "11100" ผลลัพธ์คือ True เพราะมีช่วง 1 เพียงช่วงเดียวคือ "111"

ขั้นตอนการแก้ปัญหา

  • count = -1
  • ถ้า len(s) == 1: คืน True
  • วนลูปแต่ละ i ใน s:
    • ถ้า i == "1" และ count > -1: คืน False (เจอ 1 ช่วงที่สอง)
    • มิฉะนั้นถ้า i == "0": count += 1 (นับการเปลี่ยนจาก 1 เป็น 0)
  • คืน True

ตัวอย่างโค้ด

def solve(s):
    count = -1
    if len(s) == 1:
        return True
    for i in s:
        if i == "1" and count > -1:
            return False
        elif i == "0":
            count += 1
    return True

s = "11100"
print(solve(s))

ข้อมูลเข้า

11100

ข้อมูลออก

True