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