ধরুন আমাদের একটি স্ট্রিং 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