मान लीजिए हमारे पास words नामक स्ट्रिंग्स की एक सूची है और letters नामक एक अन्य स्ट्रिंग है, हमें words में सबसे लंबे स्ट्रिंग की लंबाई ढूंढनी है जिसे letters के वर्णों से बनाया जा सकता है। यदि कोई शब्द नहीं बनाया जा सकता है, तो 0 वापस करें। यहां हम अक्षरों का पुन: उपयोग नहीं कर सकते।
उदाहरण के लिए, यदि इनपुट है words = ["dog", "cat", "rat", "bunny", "lion", "bat"], letters = "gabctnyu", तो आउटपुट होगा 3, क्योंकि हम "cat", या "bat" शब्द बना सकते हैं, इसलिए अधिकतम लंबाई 3 है।
इसे हल करने के लिए, हम निम्नलिखित चरणों का पालन करेंगे:
- ref := अक्षरों और उनकी आवृत्तियों के साथ एक मैप
- max := 0
- words में प्रत्येक शब्द के लिए, करें
- w := शब्द के अक्षरों और उनकी आवृत्तियों के साथ एक मैप
- l := शब्द का आकार
- counter := 0
- w में प्रत्येक k के लिए, करें
- यदि w[k] <= ref[k], तो
- counter := counter + 1
- अन्यथा,
- लूप से बाहर निकलें
- यदि w[k] <= ref[k], तो
- यदि l > max और w का आकार counter के समान है, तो
- max := l
- max वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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