मान लीजिए हमारे पास स्ट्रिंग्स की एक सूची है; हमें उन शब्दों की संख्या ज्ञात करनी है जो सूची में अन्य शब्दों के संयोजन हैं। हम शब्दों का पुन:उपयोग कर सकते हैं जब कई बार संयोजित और संयोजित करते हैं।
इसलिए, यदि इनपुट शब्द =["हैलो", "वर्ल्ड", "हेलोवर्ल्ड", "प्रसिद्ध", "विश्व प्रसिद्ध", "प्रोग्रामिंग"] जैसा है, तो आउटपुट 2 होगा, क्योंकि "हेलोवर्ल्ड" का संयोजन है " हैलो" और "दुनिया"। "विश्व प्रसिद्ध" "विश्व" और "प्रसिद्ध" का संयोजन है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- कोशिश करें:=एक नया नक्शा
- शब्दों में प्रत्येक शब्द के लिए, करें
- परत :=ट्राई
- शब्द में प्रत्येक w के लिए, करें
- यदि w परत में नहीं है, तो
- परत[w] :=एक नया नक्शा
- परत :=परत[w]
- यदि w परत में नहीं है, तो
- परत["*"] :=एक खाली टपल
- एक फ़ंक्शन को परिभाषित करें dfs() । यह शब्द लेगा, num_concatenated_words
- परत :=ट्राई
- शब्द में प्रत्येक अनुक्रमणिका i और शब्द w के लिए, करते हैं
- यदि "*" परत में है, तो
- यदि dfs (शब्द [सूचकांक i से अंत तक], num_concatenated_words + 1) सत्य है, तो
- सही लौटें
- यदि w परत में नहीं है, तो
- झूठी वापसी
- यदि dfs (शब्द [सूचकांक i से अंत तक], num_concatenated_words + 1) सत्य है, तो
- परत :=परत[w]
- यदि "*" परत में है, तो
- यदि "*" परत में है और num_concatenated_words>=1 है, तो
- सही लौटें
- झूठी वापसी
- मुख्य विधि से, निम्न कार्य करें:
- गिनती :=0
- शब्दों में प्रत्येक शब्द के लिए, करें
- गिनती:=गिनती + dfs(शब्द, 0)
- वापसी की संख्या
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
class Solution:
def solve(self, words):
trie = {}
for word in words:
layer = trie
for w in word:
if w not in layer:
layer[w] = {}
layer = layer[w]
layer["*"] = ()
def dfs(word, num_concatenated_words):
layer = trie
for i, w in enumerate(word):
if "*" in layer:
if dfs(word[i:], num_concatenated_words + 1):
return True
if w not in layer:
return False
layer = layer[w]
if "*" in layer and num_concatenated_words >= 1:
return True
return False
count = 0
for word in words:
count += dfs(word, 0)
return count
ob = Solution()
words = ["hello", "world", "helloworld", "famous", "worldfamous", "programming"]
print(ob.solve(words)) इनपुट
["hello", "world", "helloworld", "famous", "worldfamous", "programming"]
आउटपुट
2