কম্পিউটার

পাইথনে অভিধানিকভাবে ক্ষুদ্রতম নন-প্যালিন্ড্রোমিক স্ট্রিং খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং আছে যা একটি প্যালিনড্রোম। আমাদের একটি অক্ষর পরিবর্তন করতে হবে যাতে s আর একটি প্যালিনড্রোম নয় এবং এটি অভিধানগতভাবে সবচেয়ে ছোট।

সুতরাং, যদি ইনপুটটি s ="লেভেল" এর মত হয়, তাহলে আউটপুট হবে "aevel", যেহেতু আমরা প্রথম "l" কে "a" তে পরিবর্তন করে আভিধানিকভাবে সবচেয়ে ছোট স্ট্রিং পেতে পারি যা প্যালিনড্রোম নয়।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • এর জন্য 0 থেকে পূর্ণসংখ্যা অংশের (s / 2 এর মাপ) রেঞ্জের জন্য, করুন
    • যদি s[i] "a" এর মত না হয়, তাহলে
      • s :=s-এর সমস্ত অক্ষর থেকে একটি নতুন তালিকা
      • s[i] :="a"
      • s-এ সমস্ত অক্ষর যোগ করুন এবং ফিরে আসুন
  • 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

  1. পাইথন প্রোগ্রামে casefold() স্ট্রিং

  2. পাইথন প্রোগ্রাম একটি তালিকার ক্ষুদ্রতম সংখ্যা খুঁজে বের করতে

  3. একটি 2D অ্যারেতে k'th ক্ষুদ্রতম উপাদান খুঁজে পেতে পাইথন প্রোগ্রাম

  4. একটি স্ট্রিং মধ্যে মিরর অক্ষর খুঁজে পেতে পাইথন প্রোগ্রাম