Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> Python

सूची में मौजूद शब्द कन्कैटनेशन की संख्या गिनने का पायथन प्रोग्राम


मान लीजिए हमारे पास स्ट्रिंग्स की एक सूची है; हमें उन शब्दों की संख्या ढूंढनी है जो सूची में मौजूद अन्य शब्दों के कन्कैटनेशन हैं। हम कन्कैटनेट करते समय शब्दों का पुन: उपयोग कर सकते हैं और किसी भी संख्या में कन्कैटनेट कर सकते हैं।

उदाहरण के लिए, यदि इनपुट words = ["hello", "world", "helloworld", "famous", "worldfamous", "programming"] है, तो आउटपुट 2 होगा, क्योंकि "helloworld" "hello" और "world" का कन्कैटनेशन है। "worldfamous" "world" और "famous" का कन्कैटनेशन है।

इसे हल करने के लिए, हम निम्न चरणों का पालन करेंगे:

  • trie := एक नया मैप
  • प्रत्येक word के लिए words में, करें
    • layer := trie
    • प्रत्येक w के लिए word में, करें
      • यदि w, layer में नहीं है, तो
        • layer[w] := एक नया मैप
      • layer := layer[w]
    • layer["*"] := एक खाली टुपल
    • एक फ़ंक्शन dfs() परिभाषित करें। यह word, num_concatenated_words लेगा
    • layer := trie
    • प्रत्येक इंडेक्स i और शब्द w के लिए word में, करें
      • यदि "*", layer में है, तो
        • यदि dfs(word[i से अंत तक], num_concatenated_words + 1) सत्य है, तो
          • सत्य लौटाएं
        • यदि w, layer में नहीं है, तो
          • असत्य लौटाएं
      • layer := layer[w]
    • यदि "*", layer में है और num_concatenated_words >= 1, तो
      • सत्य लौटाएं
    • असत्य लौटाएं
    • मुख्य विधि से निम्न करें:
    • count := 0
    • प्रत्येक word के लिए words में, करें
      • count := count + dfs(word, 0)
  • count लौटाएं

बेहतर समझ के लिए निम्न कार्यान्वयन देखें:

उदाहरण

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

  1. मैट्रिक्स में पूरी तरह से घिरे हुए द्वीपों की संख्या गिनने का पायथन प्रोग्राम मैट्रिक्स में पूरी तरह से घिरे हुए द्वीपों की संख्या गिनने का पायथन प्रोग्राम

    मान लीजिए हमारे पास एक बाइनरी मैट्रिक्स है। जहां 1 भूमि दर्शाता है और 0 पानी दर्शाता है। जैसा कि हम जानते हैं एक द्वीप 1 का समूह है जो एक साथ जुड़े हुए हैं जिसकी परिधि पानी से घिरी हुई है। हमें पूरी तरह से घिरे हुए द्वीपों की संख्या ढूंढनी है। उदाहरण के लिए, यदि इनपुट इस तरह है: तो आउटपुट 2 होगा,

  1. Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना Python प्रोग्राम से सूची में सबसे छोटी संख्या खोजना

    इस लेख में, हम नीचे दिए गए समस्या कथन के समाधान के बारे में जानेंगे। समस्या कथन - हमें एक सूची दी गई है, हमें सूची में उपलब्ध सबसे छोटी संख्या प्रदर्शित करने की आवश्यकता है। यहां हम या तो सूची को क्रमबद्ध करके सबसे छोटा तत्व प्राप्त कर सकते हैं या बिल्ट-इन min() फ़ंक्शन का उपयोग करके सबसे छोटा तत्

  1. - बाइनरी संख्या में K लगातार 1 हैं या नहीं जांचने का पायथन प्रोग्राम

    समस्या विवरण सबसे पहले हम 1 और 0 के संयोजन के साथ एक यूजर इनपुट स्ट्रिंग लेते हैं। फिर 1 की एक नई स्ट्रिंग बनाते हैं, फिर जांचते हैं कि क्या p संख्या में लगातार 1 मौजूद हैं या नहीं। यदि मौजूद हैं तो FOUND प्रदर्शित करें अन्यथा NOT FOUND। उदाहरण बाइनरी संख्या ::1111001111 लगातार 1 दर्ज करें :3 लगाता