สมมติว่าเรามีสตริงไบนารี s ที่มีความยาวตั้งแต่ 2 ขึ้นไป เราต้องตรวจสอบว่าเราสามารถจัดเรียงใหม่เพื่อให้มี 0 และ 1 สำรองหรือไม่
ดังนั้น หากอินพุตเป็นเหมือน s ="1000111" ผลลัพธ์จะเป็น True เนื่องจากเราสามารถสร้าง "1010101" จาก s
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- one_count :=นับ 1 ในไบนารีสตริง s
- zero_count :=นับ 0 ในสตริงไบนารี s
- ถ้าขนาด s เป็นคู่ ดังนั้น
- คืนค่า จริง เมื่อ one_count เหมือนกับ zero_count มิฉะนั้น เท็จ
- คืนค่าจริงเมื่อ |one_count - zero_count| เหมือนกับ 1 มิฉะนั้น เท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
def solve(s):
one_count = s.count('1')
zero_count = s.count('0')
if len(s) % 2 == 0 :
return (one_count == zero_count)
return abs(one_count - zero_count) == 1
s = "1000111"
print(solve(s)) อินพุต
"1000111"
ผลลัพธ์
True