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