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

โปรแกรมตรวจสอบว่าสามารถจัดเป็นคู่หนึ่งและทริปเล็ตได้หรือไม่ใน Python

การตรวจสอบการจัดกลุ่มตัวเลขเป็นคู่และทริปเล็ต

กำหนดสตริงตัวเลข s ตรวจสอบว่าสามารถจัดเรียงใหม่ได้หรือไม่ ที่มีคู่ตัวเลขเดียวกัน 1 คู่ และที่เหลือเป็นทริปเล็ต (3 ตัวเดียวกัน) จำนวนเท่าไรก็ได้

อัลกอริทึม

  1. นับความถี่ของแต่ละตัวเลข
  2. ลองเอาตัวเลขแต่ละตัวเป็นคู่ (ลบ 2 จากความถี่)
  3. ตรวจสอบว่าความถี่ที่เหลือทุกตัวหาร 3 ลงตัวหรือไม่
  4. ถ้าผ่าน คืนค่า True
  5. คืนค่าความถี่กลับไป ลองตัวถัดไป

ตัวอย่างโค้ด

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))

ผลลัพธ์

True

คำอธิบาย

s = "21133123" มีความถี่: 1→3, 2→2, 3→3

  • ลองเอา 2 เป็นคู่: เหลือ 1→3, 2→0, 3→3 → ทุกตัวหาร 3 ลงตัว → True