मान लीजिए कि हमारे पास एक स्ट्रिंग s है, हमें s में पैलिंड्रोमिक सबस्ट्रिंग्स की संख्या ज्ञात करनी है।
इसलिए, यदि इनपुट s ="स्तर" जैसा है, तो आउटपुट 7 होगा, क्योंकि पैलिंड्रोमिक सबस्ट्रिंग हैं:["l", "e", "v", "e", "l", "eve" , "स्तर"]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन को परिभाषित करें check_palindrome()। यह स्ट्रिंग ले जाएगा, बाएँ, दाएँ
- उत्तर:=0
- बाएं>=0 और दाएं <आकार के साथ, करते हैं
- यदि s[बाएं], s[दाएं] के समान है, तो
- उत्तर:=उत्तर + 1
- बाएं:=बाएं - 1
- दाएं:=दाएं + 1
- अन्यथा,
- वापसी उत्तर
- यदि s[बाएं], s[दाएं] के समान है, तो
- वापसी उत्तर
- मुख्य विधि से, निम्न कार्य करें -
- उत्तर:=0
- char_index के लिए 0 से लेकर s के आकार तक, करें
- उत्तर:=उत्तर + check_palindrome(s, char_index - 1, char_index + 1)
- उत्तर:=उत्तर + check_palindrome(s, char_index, char_index + 1)
- वापसी (उत्तर) + 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