কম্পিউটার টিউটোরিয়াল

পাইথনে লองেস্ট ওয়ার্ড ইন ডিকশনারি (Longest Word in Dictionary)


সমস্যা বিবরণ

একটি ডিকশনারি (শব্দের লিস্ট) দেওয়া থাকে। সেই শব্দটি খুঁজে বের করুন যা সবচেয়ে বড় এবং এক-এক অক্ষর করে অন্যান্য শব্দ থেকে তৈরি করা যায়। একাধিক হলে লেক্সিকোগ্রাফিক্যালি সবচেয়ে ছোটটি রিটার্ন করুন।

উদাহরণ

words = ["h","he","hel","hell","hello"] → আউটপুট: "hello"

"h" → "he" → "hel" → "hell" → "hello" — প্রতিটি প্রিফিক্স ডিকশনারিতে আছে।

এলগরিদম (Trie + DFS)

  1. একটি Trie (প্রিফিক্স ট্রি) তৈরি করুন যেখানে প্রতিটি নোডে '#' কী দিয়ে শব্দের শেষ চিহ্নিত করুন।
  2. সব শব্দ Trie-এ ইনসার্ট করুন।
  3. প্রতিটি শব্দের জন্য সার্চ করুন: প্রতিটি প্রিফিক্সে '#' = True কিনা চেক করুন।
  4. বৈধ শব্দগুলোর মধ্যে সবচেয়ে বড়টি, টাই হলে লেক্সিকোগ্রাফিক্যালি ছোটটি বেছে নিন।

পাইথন বাস্তবায়ন

class Solution:
    def longestWord(self, words):
        trie = {}
        END = '#'
        
        def insert(word):
            node = trie
            for c in word:
                node = node.setdefault(c, {})
            node[END] = True
        
        def search(word):
            node = trie
            for c in word:
                if END not in node or not node[END]:
                    return False
                node = node[c]
            return END in node and node[END]
        
        for w in words:
            insert(w)
        
        ans = ""
        for w in words:
            if search(w) and (len(w) > len(ans) or (len(w) == len(ans) and w < ans)):
                ans = w
        return ans

ob = Solution()
print(ob.longestWord(["h","he","hel","hell","hello"]))  # hello

ইনপুট / আউটপুট

ইনপুট: ["h","he","hel","hell","hello"]
আউটপুট: hello
  1. C++-এ ডিলিট করে ডিকশনারি থেকে সর্বোচ্চ দৈর্ঘ্যের শব্দ

  2. পাইথনে ওয়ার্ড অ্যারে-তে সর্বোচ্চ দৈর্ঘ্যের প্রিফিক্স সিকোয়েন্স খুঁজে বের করার প্রোগ্রাম

  3. পাইথন: স্ট্রিংয়ে শব্দ ফ্রিকোয়েন্সি গণনা করা (Dictionary Comprehension)

  4. পাইথন Tkinter ব্যবহার করে শব্দের ডিকশনারি অ্যাপ তৈরি করা