मान लीजिए हमारे पास एक स्ट्रिंग s है, हमें s में पैलिंड्रोमिक सबस्ट्रिंग की संख्या ढूंढनी है।
इसलिए, यदि इनपुट s = "level" जैसा है, तो आउटपुट 7 होगा, क्योंकि पैलिंड्रोमिक सबस्ट्रिंग हैं: ["l","e","v","e","l","eve","level"]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- एक फ़ंक्शन check_palindrome() परिभाषित करें। यह string, left, right लेगा
- ans := 0
- जब तक left >= 0 और right < s का आकार, करें
- यदि s[left], s[right] के समान है, तो
- ans := ans + 1
- left := left - 1
- right := right + 1
- अन्यथा,
- ans वापस करें
- यदि s[left], s[right] के समान है, तो
- ans वापस करें
- मुख्य विधि से, निम्नलिखित करें −
- ans := 0
- char_index के लिए 0 से s के आकार तक की रेंज में, करें
- ans := ans + check_palindrome(s, char_index - 1, char_index + 1)
- ans := ans + check_palindrome(s, char_index, char_index + 1)
- (ans) + s का आकार वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −
उदाहरण
class Solution: def solve(self, s): def check_palindrome(string, left, right): ans = 0 while left >= 0 and right < len(s): if s[left] == s[right]: ans += 1 left -= 1 right += 1 else: return ans return ans ans = 0 for char_index in range(len(s)): ans += check_palindrome(s, char_index - 1, char_index + 1) ans += check_palindrome(s, char_index, char_index + 1) return (ans) + len(s) ob = Solution() print(ob.solve("level"))इनपुट
"level"
आउटपुट
7