สมมติว่าเรามีสตริงไบนารี str เราต้องตรวจสอบว่า 1s ทั้งหมดในสตริงนั้นเท่ากันหรือไม่ กล่าวอีกนัยหนึ่ง ระยะห่างระหว่างทุกๆ สอง 1 วินาทีนั้นเท่ากัน และสตริงประกอบด้วย 1 อย่างน้อยสองตัว
ดังนั้น หากอินพุตมีค่าเท่ากับ s ="1000000000010000" ผลลัพธ์จะเป็น True เนื่องจาก 1 วินาทีอยู่ห่างจากกัน 4 วินาที
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- ดัชนี :=รายการใหม่
- สำหรับฉันในช่วง 0 ถึงขนาดของ s ทำ
- ถ้า s[i] เหมือนกับ 1 แล้ว
- แทรก i ที่ท้ายดัชนี
- ถ้า s[i] เหมือนกับ 1 แล้ว
- t :=ขนาดของดัชนี
- สำหรับ i ในช่วง 1 ถึง t - 1 ทำ
- ถ้า (index[i] - index[i - 1]) ไม่เหมือนกับ (index[1] - index[0]) ดังนั้น
- คืนค่าเท็จ
- ถ้า (index[i] - index[i - 1]) ไม่เหมือนกับ (index[1] - index[0]) ดังนั้น
- คืนค่า True
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
ตัวอย่าง
def solve(s): index = [] for i in range(len(s)): if s[i] == '1': index.append(i) t = len(index) for i in range(1, t): if (index[i] - index[i - 1]) != (index[1] - index[0]): return False return True s = "100001000010000" print(solve(s))
อินพุต
"100001000010000"
ผลลัพธ์
True