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

โปรแกรมหาจำนวนคนไม่ซ้ำกันจากรายชื่อเมลไอดีใน Python


สมมติว่าเรามีรายการรหัสอีเมลในรายการค่าคงที่ ดังนั้นในแต่ละแถวอาจมี ID อีเมลของบุคคลเดียวกันมากกว่าหนึ่งรายการ ผู้ติดต่อ i จะถือว่าซ้ำกันเมื่อมี j โดยที่ j

ดังนั้น หากอินพุตเป็นเหมือนรายชื่อติดต่อ =[["alex@gmail.com", "alex@yahoo.com"], ["alex_25@yahoo.com", "alex@gmail.com"], ["bob15@ gmail.com"] ] ผลลัพธ์จะเป็น 2 เนื่องจากผู้ติดต่อรายแรกและรายที่สองใช้รหัสอีเมลร่วมกัน จึงเป็นบุคคลเดียวกัน จึงมีสองคนที่ไม่ซ้ำกัน

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • ตอบ :=0
  • พบ :=ชุดใหม่
  • สำหรับแต่ละ c ในการติดต่อ ทำ
    • ซ้ำซาก :=เท็จ
    • สำหรับแต่ละอีเมลใน c ทำ
      • หากไม่พบอีเมล แสดงว่า
        • ทำเครื่องหมายอีเมลว่าพบแล้ว
      • มิฉะนั้น
        • ซ้ำซาก :=จริง
    • ถ้าการทำให้หมองคล้ำเป็นเท็จ
      • อัน :=ans + 1
  • คืนสินค้า

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

def solve(contacts):
   ans = 0
   found = set()

   for c in contacts:
      dullicate = False

      for email in c:
         if email not in found:
            found.add(email)
         else:
            dullicate = True
      if not dullicate:
         ans += 1

   return ans

contacts = [
["alex@gmail.com", "alex@yahoo.com"],
["alex_25@yahoo.com", "alex@gmail.com"],
["bob15@gmail.com"]
]
print(solve(contacts))

อินพุต

[["alex@gmail.com", "alex@yahoo.com"],
["alex_25@yahoo.com", "alex@gmail.com"],
["bob15@gmail.com"]
]

ผลลัพธ์

2