মান ল করুন একটি s স্ট্রিং, আমাদের s-এ প্যালিনড্রোমিক সাবস্ট্রিংর সংখ্যা খুঁজে বের করতে হবে।
যদি ইনপুট হয় s = "level", তবে আউটপুট হবে ৭, কারণ প্যালিনড্রোমিক সাবস্ট্রিংগুলো: ["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 ফেরত দিন
- ans ফেরত দিন
- মূল মেথড থেকে: ans := 0, char_index কে ০ থেকে s-এর আকার পর্যন্ত লুপ চালান:
- ans += check_palindrome(s, char_index - 1, char_index + 1)
- 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