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

คำรหัสมอร์สที่ไม่ซ้ำใน Python


สมมติว่าเรามีรายการคำ ที่นี่แต่ละคำสามารถเขียนเป็นการต่อรหัสมอร์สของตัวอักษรแต่ละตัวได้ ตัวอย่างเช่น คำว่า "cba" สามารถเขียนเป็น "-.-..--..." ซึ่งเป็นการต่อ "-.-" | "-..." | ".-") การต่อกันแบบนี้เรียกว่าการแปลงคำ

เรารู้ว่ารหัสมอร์สสากลกำหนดการเข้ารหัสมาตรฐานโดยที่ตัวอักษรแต่ละตัวจะจับคู่กับชุดของจุดและขีดกลางดังนี้:"a" จับคู่กับ ".-", "b" จับคู่กับ "-...", "c " แมปกับ "-.-." เป็นต้น

รายชื่อตัวอักษรภาษาอังกฤษทั้ง 26 ตัวมีดังนี้ −

[".-","-...","-.-.","-..",".","..-.","--.","....", "..",".---","-.-",".-..","--","-.","---",".--.","- -.-",".-.","...","-","..-","...-",".--","-..-","-. --","--.."]

ดังนั้น หากอินพุตเป็นเหมือน ["gin", "zen", "gig", "msg"] ผลลัพธ์จะเป็น 2 เนื่องจากการแปลงของแต่ละคำคือ:"gin" จะเป็น "--.. .-.", "zen" จะเป็น "--...-." "กิ๊ก" จะเป็น "-...--" และ "msg" จะเป็น "--...--.".

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

  • รหัสมอร์ส:=[".-","-...","-.-.","-..",".","..-.","--."," ....","..",".---","-.-",".-..","--","-.","---",".- -.","--.-",".-.","...","-","..-","...-",".--","-.. -","-.--","--.."]
  • s:=ชุดใหม่
  • สำหรับแต่ละคำในคำ ทำ
    • temp:=สตริงว่าง
    • สำหรับแต่ละ c ใน word ทำ
      • อุณหภูมิ :=อุณหภูมิ + morse_codes[ASCII ของ c - 97]
    • เพิ่มอุณหภูมิใน s
  • ขนาดผลตอบแทนของ s

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

ตัวอย่าง

วิธีแก้ปัญหาของคลาส:def uniqueMorseRepresentations(self, words):morse_codes=[".-","-...","-.-.","-..",".","..- .","-- .","....","..",".---","-.-",".-..","--","-" ,"---",".--.","--.-",".- .","...","-","..-","...-", ".--","-..-","-.--","--.."] s=set() สำหรับคำในคำ:temp='' สำหรับ c ใน word:temp+=morse_codes[ ord(c)-97] s.add(ชั่วคราว) return len(s)ob =Solution()print(ob.uniqueMorseRepresentations(["gin", "zen", "gig", "msg"])) 

อินพุต

["gin", "zen", "gig", "msg"]

ผลลัพธ์

2