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

पैलिंड्रॉम को विभाजित करने के तरीकों की संख्या ज्ञात करने का पायथन प्रोग्राम


मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें उन तरीकों की संख्या ढूंढनी है जिनसे हम स्ट्रिंग को विभाजित कर सकते हैं जैसे कि प्रत्येक भाग एक पैलिंड्रॉम हो।

उदाहरण के लिए, यदि इनपुट s = "xyyx" है, तो आउटपुट 3 होगा, क्योंकि हमारे पास विभाजन हैं: ["x", "yy", "x"], ["x", "y", "y", "x"], ["xyyx"]।

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

  • n := s का आकार
  • table := आकार n + 1 की सूची और इसे 0 से भरें
  • table[0] := 1
  • i को 0 से n तक के लिए, करें
    • j को 0 से i - 1 तक के लिए, करें
      • sub := s[j से i तक]
      • यदि sub पैलिंड्रॉम है, तो
        • table[i] := table[i] + table[j]
  • table के अंतिम तत्व को लौटाएं

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

उदाहरण

class Solution:
    def solve(self, s):
        n = len(s)
        table = [1] + [0] * n
        for i in range(n + 1):
            for j in range(i):
                sub = s[j:i]
                if sub == sub[::-1]:
                    table[i] += table[j]
        return table[-1]

ob = Solution()
s = "xyyx"
print(ob.solve(s))

इनपुट

"xyyx"

आउटपुट

3

  1. - पायथन में संदेश को डिकोड करने के तरीकों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास a = 1, b = 2, ... z = 26 जैसा मैपिंग है, और हमारे पास एक एन्कोडेड संदेश message स्ट्रिंग है, हमें उन तरीकों की संख्या गिननी है जिनसे इसे डिकोड किया जा सकता है। उदाहरण के लिए, यदि इनपुट message = 222 है, तो आउटपुट 3 होगा, क्योंकि इसे 3 तरीकों से डिकोड किया जा सकता है: bbb, bv, और

  1. - पायथन में अधिकतम सिक्के एकत्र करने का प्रोग्राम

    मान लीजिए हमारे पास एक 2D मैट्रिक्स है जहां प्रत्येक सेल कुछ सिक्के संग्रहीत करता है। यदि हम [0,0] से शुरू करते हैं, और केवल दाएं या नीचे जा सकते हैं, तो हमें नीचे-दाएं कोने तक पहुंचने तक एकत्र किए जा सकने वाले अधिकतम सिक्कों की संख्या ढूंढनी है। उदाहरण के लिए, यदि इनपुट है: 1422 6005 तो आउटपुट

  1. - पायथन में सीढ़ियां चढ़ने के तरीकों की संख्या खोजने का प्रोग्राम

    मान लीजिए हमारे पास n चरणों वाली एक सीढ़ी है, और हम एक बार में 1 या 2 चरण चढ़ सकते हैं। हमें एक फ़ंक्शन परिभाषित करना है जो सीढ़ी चढ़ने के अद्वितीय तरीकों की संख्या लौटाता है। चरणों का क्रम नहीं बदला जाना चाहिए, इसलिए चरणों का प्रत्येक अलग क्रम एक तरीका गिना जाता है। यदि उत्तर बहुत बड़ा है तो परिणा