मान लीजिए कि हमारे पास एक स्ट्रिंग है, हमें स्ट्रिंग को विभाजित करने के तरीकों की संख्या का पता लगाना होगा जैसे कि प्रत्येक भाग एक पैलिंड्रोम हो।
इसलिए, यदि इनपुट s ="xyyx" जैसा है, तो आउटपुट 3 होगा, क्योंकि हमारे पास विभाजन हैं:["x", "yy", "x"], ["x", "y", " y", "x"], ["xyyx"]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
- n :=आकार का
- तालिका:=आकार n + 1 की एक सूची और इसे 0 से भरें
- तालिका[0] :=1
- मैं के लिए 0 से n की सीमा में, करते हैं
- जे के लिए 0 से i-1 की श्रेणी में, करें
- उप:=s[सूचकांक j से i तक]
- यदि उप पैलिंड्रोम है, तो
- टेबल[i] :=टेबल[i] + टेबल[j]
- जे के लिए 0 से i-1 की श्रेणी में, करें
- तालिका का अंतिम तत्व लौटाएं
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें:
उदाहरण
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