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

ตรวจสอบว่า 1s ทั้งหมดในสตริงไบนารีนั้นเท่ากันหรือไม่ใน Python


สมมติว่าเรามีสตริงไบนารี str เราต้องตรวจสอบว่า 1s ทั้งหมดในสตริงนั้นเท่ากันหรือไม่ กล่าวอีกนัยหนึ่ง ระยะห่างระหว่างทุกๆ สอง 1 วินาทีนั้นเท่ากัน และสตริงประกอบด้วย 1 อย่างน้อยสองตัว

ดังนั้น หากอินพุตมีค่าเท่ากับ s ="1000000000010000" ผลลัพธ์จะเป็น True เนื่องจาก 1 วินาทีอยู่ห่างจากกัน 4 วินาที

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ดัชนี :=รายการใหม่
  • สำหรับฉันในช่วง 0 ถึงขนาดของ s ทำ
    • ถ้า s[i] เหมือนกับ 1 แล้ว
      • แทรก i ที่ท้ายดัชนี
  • t :=ขนาดของดัชนี
  • สำหรับ i ในช่วง 1 ถึง t - 1 ทำ
    • ถ้า (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