मान लीजिए कि हमारे पास एक स्ट्रिंग 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