ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদের s-এ প্যালিনড্রোমিক সাবস্ট্রিং-এর সংখ্যা বের করতে হবে।
সুতরাং, যদি ইনপুটটি s ="লেভেল" এর মত হয়, তাহলে আউটপুট হবে 7, যেমন প্যালিনড্রোমিক সাবস্ট্রিংগুলি হল:["l","e","v","e","l","eve" "স্তর"]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- একটি ফাংশন সংজ্ঞায়িত করুন check_palindrome()। এটি স্ট্রিং, বাম, ডান লাগবে
- উত্তর :=0
- যখন বামে>=0 এবং ডানে
- যদি s[left] s[right] এর মত হয়, তাহলে
- উত্তর :=উত্তর + ১
- বাম :=বাম - 1
- ডান:=ডান + 1
- অন্যথায়,
- উত্তর ফেরত দিন
- যদি s[left] s[right] এর মত হয়, তাহলে
- করুন
- উত্তর :=উত্তর + চেক_প্যালিন্ড্রোম(গুলি, char_index - 1, char_index + 1)
- উত্তর :=ans + check_palindrome(s, char_index, char_index + 1)
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
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