ধরুন আমাদের একটি স্ট্রিং আছে যা একটি প্যালিনড্রোম। আমাদের একটি অক্ষর পরিবর্তন করতে হবে যাতে s আর একটি প্যালিনড্রোম নয় এবং এটি অভিধানগতভাবে সবচেয়ে ছোট।
সুতরাং, যদি ইনপুটটি s ="লেভেল" এর মত হয়, তাহলে আউটপুট হবে "aevel", যেহেতু আমরা প্রথম "l" কে "a" তে পরিবর্তন করে আভিধানিকভাবে সবচেয়ে ছোট স্ট্রিং পেতে পারি যা প্যালিনড্রোম নয়।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- এর জন্য 0 থেকে পূর্ণসংখ্যা অংশের (s / 2 এর মাপ) রেঞ্জের জন্য, করুন
- যদি s[i] "a" এর মত না হয়, তাহলে
- s :=s-এর সমস্ত অক্ষর থেকে একটি নতুন তালিকা
- s[i] :="a"
- s-এ সমস্ত অক্ষর যোগ করুন এবং ফিরে আসুন
- যদি s[i] "a" এর মত না হয়, তাহলে
- s :=s-এর সমস্ত অক্ষর থেকে একটি নতুন তালিকা
- s এর শেষ উপাদান :="b"
- s-এ সমস্ত অক্ষর যোগ করুন এবং ফিরে আসুন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def solve(self, s): for i in range(len(s) // 2): if s[i] != "a": s = list(s) s[i] = "a" return "".join(s) s = list(s) s[-1] = "b" return "".join(s) ob = Solution() s = "level" print(ob.solve(s))
ইনপুট
"level"
আউটপুট
aevel