সমস্যা বিবরণ
শব্দের প্রতিটি অক্ষরকে মোর্স কোডে রূপান্তর করে একটি শব্দের "ট্রান্সফরমেশন" বানানো হয়। দেওয়া শব্দগুলোর মধ্যে কতগুলো ইউনিক ট্রান্সফরমেশন আছে তা বের করুন।
মোর্স কোড টেবিল
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
ইনডেক্স ০ = 'a', ১ = 'b', ... ২৫ = 'z'
উদাহরণ
ইনপুট: ["gin", "zen", "gig", "msg"] → আউটপুট: 2
ট্রান্সফরমেশন: "gin"→"--...-.", "zen"→"--...-.", "gig"→"--...--.", "msg"→"--...--." → ইউনিক ২টি।
এলগরিদম
- মোর্স কোড লিস্ট সংজ্ঞায়িত করুন।
- একটি সেট
seenতৈরি করুন। - প্রতিটি শব্দের জন্য:
- প্রতিটি অক্ষর
cএর মোর্স কোডmorse[ord(c)-97]কনক্যাটিনেট করুন। - ফলাফল
seen-এ যোগ করুন।
- প্রতিটি অক্ষর
len(seen)রিটার্ন করুন।
পাইথন বাস্তবায়ন
class Solution:
def uniqueMorseRepresentations(self, words):
morse = [".-","-...","-.-.","-..",".","..-.","--.","....","..",".---",
"-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-",
"..-","...-",".--","-..-","-.--","--.."]
seen = set()
for word in words:
trans = ''.join(morse[ord(c)-97] for c in word)
seen.add(trans)
return len(seen)
ob = Solution()
print(ob.uniqueMorseRepresentations(["gin","zen","gig","msg"])) # 2
ইনপুট / আউটপুট
ইনপুট: ["gin", "zen", "gig", "msg"] আউটপুট: 2