สมมติว่าเรามีสตริงตัวเลข s เราต้องตรวจสอบว่ามีการจัดเรียงบางอย่างที่เราสามารถมีอักขระตัวเดียวกันได้หนึ่งคู่หรือไม่ และสตริงที่เหลือจะสร้างแฝดสามของอักขระเดียวกันจำนวนเท่าใดก็ได้
ดังนั้น หากอินพุตเป็นเหมือน s ="21133123" ผลลัพธ์จะเป็น True เนื่องจากมี 2 วินาทีเพื่อสร้าง "22" เป็นคู่ และ "111", "333" เป็นแฝดสาม
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
-
d :=รายการที่มีความถี่ของแต่ละองค์ประกอบที่มีอยู่ใน s
-
สำหรับแต่ละ k ใน d ทำ
-
d[k] :=d[k] - 2
-
ถ้า d[i] mod 3 เป็น 0 สำหรับ i ทั้งหมดใน d แล้ว
-
คืนค่า True
-
-
d[k] :=d[k] + 2
-
-
คืนค่าเท็จ
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น
from collections import Counter def solve(s): d = Counter(s) for k in d: d[k] -= 2 if all(d[i] % 3 == 0 for i in d): return True d[k] += 2 return False s = "21133123" print(solve(s))
อินพุต
"21133123"
ผลลัพธ์
True