ধরুন আমাদের একটি স্ট্রিং s আছে, আমাদেরকে s এর বাম এবং ডান দিকে ছাঁটাই করে প্যালিনড্রোম পাওয়ার উপায়গুলি খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুটটি s ="momo" এর মত হয়, তাহলে আউটপুট হবে 6, যেমন আপনি পেতে পারেন ["mom", "omo", "o", "o", "m", "m", " o")
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
একটি ফাংশন expand() সংজ্ঞায়িত করুন। এর জন্য i, j, s
লাগবে -
c :=0
-
যখন i>=0 এবং j
-
i :=i − 1, j :=j + 1
-
c :=c + 1
-
-
ফেরত c
-
প্রধান পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন
-
c :=0
-
0 থেকে s আকারের রেঞ্জের জন্য, করুন
-
c :=c + প্রসারিত করুন(i, i, s)
-
c :=c + প্রসারিত করুন(i, i + 1, s)
-
-
ফেরত c
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
def expand(i, j, s): c = 0 while i >= 0 and j < len(s) and s[i] == s[j]: i −= 1 j += 1 c += 1 return c class Solution: def solve(self, s): c = 0 for i in range(len(s)): c += expand(i, i, s) c += expand(i, i + 1, s) return c ob = Solution() s = "momo" print(ob.solve(s))
ইনপুট
"momo"
আউটপুট
6