मान लीजिए कि हमारे पास स्ट्रिंग्स की एक सूची है जिसे शब्द कहा जाता है और एक अन्य स्ट्रिंग जिसे अक्षर कहा जाता है, हमें शब्दों में सबसे लंबी स्ट्रिंग की लंबाई ज्ञात करनी है जो अक्षरों में वर्णों से बन सकती है। यदि कोई शब्द नहीं बनाया जा सकता है, तो 0 लौटाएं। यहां हम अक्षरों का पुन:उपयोग नहीं कर सकते हैं।
इसलिए, यदि इनपुट शब्द =["कुत्ता", "बिल्ली", "चूहा", "बनी", "शेर", "बैट"], अक्षर ="गैबक्टन्यू" जैसा है, तो आउटपुट 3 होगा, जैसा कि हम शब्द "बिल्ली", या "बैट" बना सकते हैं, इसलिए अधिकतम लंबाई 3 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- संदर्भ:=अक्षरों और उनकी आवृत्तियों के साथ एक नक्शा
- अधिकतम:=0
- शब्दों में प्रत्येक शब्द के लिए, करें
- w :=शब्द के अक्षरों और उनकी आवृत्तियों के साथ एक नक्शा
- l :=शब्द का आकार
- काउंटर:=0
- w में प्रत्येक k के लिए, करें
- अगर w[k] <=ref[k], तो
- काउंटर:=काउंटर + 1
- अन्यथा,
- लूप से बाहर आएं
- अगर w[k] <=ref[k], तो
- यदि l> w का अधिकतम और आकार काउंटर के समान है, तो
- अधिकतम:=एल
- अधिकतम वापसी
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
from collections import Counter class Solution: def solve(self, words, letters): ref = Counter(letters) max = 0 for word in words : w = Counter(word) l = len(word) counter = 0 for k in w : if w[k] <= ref[k]: counter+=1 pass else : break if l > max and len(w) == counter: max = l return max ob = Solution() words = ["dog", "cat", "rat", "bunny", "lion", "bat"] letters = "gabctnyu" print(ob.solve(words, letters))
इनपुट
["dog", "cat", "rat", "bunny", "lion", "bat"], "gabctnyu"
आउटपुट
3