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

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


สมมติว่าเรามีสตริงตัวเลข 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