ধরুন আমাদের কাছে স্ট্রিং শব্দের একটি তালিকা আছে। আমাদের এমন একটি স্ট্রিং তৈরি করতে হবে যা শব্দের একটি অনুগামী শব্দ সংযুক্ত করে তৈরি করা হয় যাতে প্রতিটি অক্ষর অনন্য হয়। আমাদের অবশেষে দীর্ঘতম এই ধরনের সংযোগের দৈর্ঘ্য খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি শব্দের মত হয় =["xyz", "xyw", "wab", "cde"], তাহলে আউটপুট হবে 9, যেহেতু আমরা কোনো শব্দ বাছাই করতে পারি না কারণ এতে ডুপ্লিকেট অক্ষর রয়েছে।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব
উত্তর :=0
একটি ফাংশন recur() সংজ্ঞায়িত করুন। এটি i:=0, cur:=ফাঁকা স্ট্রিং
লাগবেif i is same as size of words , then ans := maximum of ans and size of cur return recur(i + 1, cur) if all characters in words[i] are unique and all characters in (cur + words[i]) are unique, then recur(i + 1, cur + words[i]) From the main method do the following: recur() return ans
আরও ভালভাবে বোঝার জন্য আসুন নিম্নলিখিত বাস্তবায়ন দেখি:
উদাহরণ
class Solution: def solve(self, words): ans = 0 def is_all_unique(s): return len(set(s)) == len(s) def recur(i=0, cur=""): nonlocal ans if i == len(words): ans = max(ans, len(cur)) return recur(i + 1, cur) if is_all_unique(words[i]) and is_all_unique(cur + words[i]): recur(i + 1, cur + words[i]) recur() return ans ob = Solution() words = ["xyz", "xyw", "wab", "cde"] print(ob.solve(words))
ইনপুট
["xyz", "xyw", "wab", "cde"]
আউটপুট
9