मान लीजिए हमारे पास शब्दों का एक शब्दकोश है, और हमें दिए गए शब्दकोश शब्दों से न्यूनतम लंबाई वाला शब्द ढूंढना है, जिसमें licensePlate स्ट्रिंग के सभी अक्षर हों। ऐसा शब्द licensePlate स्ट्रिंग को पूरा करता है। यहां हम अक्षरों के लिए केस को नजरअंदाज करते हैं। और यह गारंटी है कि एक उत्तर मौजूद है। यदि एक से अधिक उत्तर हैं, तो वह उत्तर वापस करें जो सरणी में पहले आता है।
लाइसेंस प्लेट में समान अक्षर कई बार हो सकते हैं। इसलिए यदि licensePlate "PP" है, तो शब्द "pile" licensePlate को पूरा नहीं करता, लेकिन "topper" करता है।
उदाहरण के लिए, यदि इनपुट licensePlate = "1s3 PSt", words = ["step", "steps", "stripe", "stepple"] है, तो आउटपुट "steps" होगा, क्योंकि सबसे छोटी लंबाई वाला शब्द जिसमें "S", "P", "S", "T" अक्षर हैं, वह "steps" है।
हल करने के चरण
- alphabet := "abcdefghijklmnopqrstuvwxyz"
- letters := licensePlate से उन सभी s की सूची जो alphabet में हैं, लोअरकेस में
- valid_words := एक नई सूची
- words में प्रत्येक i के लिए:
- append := True
- letters में प्रत्येक j के लिए:
- append := append और (letters में j की संख्या <= i में j की संख्या)
- यदि append सत्य है, तो:
- i को valid_words के अंत में डालें
- valid_words में न्यूनतम लंबाई वाला शब्द वापस करें
उदाहरण
class Solution:
def shortestCompletingWord(self, licensePlate, words):
alphabet = "abcdefghijklmnopqrstuvwxyz"
letters = [s.lower() for s in licensePlate if s.lower() in alphabet]
valid_words = []
for i in words:
append = True
for j in letters:
append = append and (letters.count(j) <= i.count(j))
if append:
valid_words.append(i)
return min(valid_words, key=len)
ob = Solution()
print(ob.shortestCompletingWord("1s3 PSt", ["step", "steps", "stripe", "stepple"]))
इनपुट
"1s3 PSt", ["step", "steps", "stripe", "stepple"]
आउटपुट
steps