मान लीजिए हमारे पास स्ट्रिंग शब्दों की एक सूची है। हमें एक स्ट्रिंग बनानी है जो शब्दों के बाद के क्रम को जोड़कर बनाई गई है जैसे कि प्रत्येक अक्षर अद्वितीय है। हमें अंत में इस तरह के सबसे लंबे संयोजन की लंबाई का पता लगाना होगा।
इसलिए, यदि इनपुट शब्द =["xyz", "xyw", "wab", "cde"] जैसा है, तो आउटपुट 9 होगा, क्योंकि हम कोई भी शब्द नहीं चुन सकते क्योंकि उनमें डुप्लिकेट वर्ण होते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे
उत्तर :=0
फ़ंक्शन रिकूर () को परिभाषित करें। यह ले जाएगा 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