मान लीजिए हमारे पास शब्दों की एक सूची है और एक स्ट्रिंग है जिसे अक्षर कहा जाता है, हमें सबसे लंबे शब्द का आकार ज्ञात करना है जो दिए गए अक्षरों को पुनर्व्यवस्थित करके बनाया जा सकता है। अक्षरों में तारक वर्ण (*) हो सकता है यह किसी भी वर्ण से मेल खा सकता है। और सभी अक्षरों का उपयोग करना आवश्यक नहीं है।
इसलिए, यदि इनपुट शब्द =["राजकुमार", "चावल", "कीमत", "सीमा", "हैलो"] अक्षर ="*r**ce*" जैसा है, तो आउटपुट 6 होगा, जैसा कि सबसे लंबा शब्द जो हम बना सकते हैं वह है "राजकुमार" जिसकी लंबाई 6 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- इसमें :=एक नक्शा है जिसमें अक्षरों में प्रत्येक तत्व के अक्षर और आवृत्तियां हैं
- एक फ़ंक्शन मान्य() परिभाषित करें। इसमें लगेगा
- ज़रूरत:=एक नक्शा जिसमें अक्षरों और प्रत्येक तत्व के आवृत्तियों को शामिल किया गया है
- अतिरिक्त :=के सभी तत्वों का योग (अधिकतम 0 और आवश्यकता [char] - है [char] सभी चार जरूरतमंदों के लिए)
- सही लौटें जब अतिरिक्त <=में["*"] हो
- मुख्य विधि से निम्न कार्य करें:
- सूची में सभी तत्वों की अधिकतम वापसी [शब्द मान्य होने पर शब्दों में सभी शब्दों के लिए शब्द का आकार]
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
from collections import Counter class Solution: def solve(self, words, letters): has = Counter(letters) def valid(s): need = Counter(s) extra = sum([max(0, need[char] - has[char]) for char in need]) return extra <= has["*"] return max([len(word) for word in words if valid(word)]) ob = Solution() words = ["prince", "rice", "price", "limit", "hello"] letters = "*r**ce*" print(ob.solve(words, letters))
इनपुट
["prince", "rice", "price", "limit", "hello"], "*r**ce*"
आउटपुट
6