मान लीजिए हमारे पास वैध शब्दों की एक सूची है, और एक स्ट्रिंग s भी है, हमें s से शुरू करके एकल अक्षरों को हटाकर और फिर भी वैध शब्द बनाकर उत्पन्न की जा सकने वाली सबसे लंबी घटते शब्द श्रृंखला की लंबाई ढूंढनी है।
उदाहरण के लिए, यदि इनपुट words = ["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"] s = "limit" है, तो आउटपुट 4 होगा, क्योंकि हम श्रृंखला बना सकते हैं, "limit" शब्द से शुरू करके, "limit" -> "limi" -> "lii" -> "li"।
इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे
- एक फ़ंक्शन solve() परिभाषित करें। यह words, s लेगा
- max_num := 0
- words में प्रत्येक i के लिए, करें
- यदि i s के समान है, तो
- j को 0 से s के आकार तक रेंज में, करें
- max_num := 1 + solve(words, s[इंडेक्स 0 से j-1 तक] concatenate s[इंडेक्स j + 1 से अंत तक]) और max_num का अधिकतम
- j को 0 से s के आकार तक रेंज में, करें
- यदि i s के समान है, तो
- max_num लौटाएं
उदाहरण
class Solution: def solve(self, words, s): max_num = 0 for i in words: if i == s: for j in range(len(s)): max_num = max(1 + self.solve(words, s[:j] + s[j + 1 :]), max_num) return max_num ob = Solution() words = ["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"] s = "limit" print(ob.solve(words, s))
इनपुट
["lii", "limit", "limi", "li", "coffee", "jug", "pool", "type"],"limit"
आउटपुट
4