কম্পিউটার

পাইথনে অনুরূপ প্রান্তগুলি মুছে ফেলার পরে স্ট্রিংয়ের ন্যূনতম দৈর্ঘ্য খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s আছে মাত্র তিনটি অক্ষর 'a', 'b', এবং 'c'। −

যেকোন সংখ্যক বার আমরা স্ট্রিং-এ নিম্নলিখিত অ্যালগরিদম প্রয়োগ করব
  • s থেকে একটি অ-খালি উপসর্গ নির্বাচন করুন যেখানে উপসর্গের সমস্ত অক্ষর একই।

  • s থেকে একটি অ-খালি প্রত্যয় নির্বাচন করুন যেখানে প্রত্যয়ের সমস্ত অক্ষর একই।

  • উপসর্গ এবং প্রত্যয়টি বিচ্ছিন্ন।

  • উপসর্গ এবং প্রত্যয় থেকে অক্ষর অবশ্যই একই হতে হবে।

  • s থেকে উপসর্গ এবং প্রত্যয় উভয়ই সরান।

অবশেষে, উপরের অপারেশনটি যে কোনো সংখ্যক বার (সম্ভবত শূন্য বার) করার পর আমাদের ন্যূনতম s-এর দৈর্ঘ্য খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি s ="aabccabba" এর মতো হয়, তবে আউটপুট হবে 3 কারণ আমরা প্রথমে উপসর্গ ="aa" এবং প্রত্যয় ="a" নির্বাচন করতে পারি, যাতে অপসারণের পরে স্ট্রিংটি "bccabb" হয়। উপসর্গ ="b" এবং প্রত্যয় "bb" নির্বাচন করুন, তাই অপসারণের পরে স্ট্রিং "cca", যার দৈর্ঘ্য 3।

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

  • s :=s

    দিয়ে একটি সারি তৈরি করুন
  • যখন s> 1 এবং s[0] এর আকার s এর শেষ উপাদান, তাই করুন

    • chk :=s[0>

    • যখন s এবং s[0] একই, কর

      • s

        থেকে বাম উপাদান মুছুন
    • যখন s খালি নয় এবং s এর শেষ উপাদানটি chk, do

      এর মতই
      • s

        থেকে শেষ উপাদান মুছুন
  • s

    এর রিটার্ন সাইজ

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

from collections import deque
def solve(s):
   s = deque(s)
   while len(s) > 1 and s[0] == s[-1]:
      chk = s[0]
      while s and s[0] == chk:
         s.popleft()
      while s and s[-1] == chk:
         s.pop()
   return len(s)

s = "aabccabba"
print(solve(s))

ইনপুট

"aabccabba"

আউটপুট

3

  1. পাইথনে মার্জ করার পরে ন্যূনতম সংখ্যার রঙগুলি খুঁজে বের করার প্রোগ্রামটি থাকে

  2. পাইথনে kth ক্ষুদ্রতম n দৈর্ঘ্য অভিধানিকভাবে ক্ষুদ্রতম স্ট্রিং খুঁজে বের করার জন্য প্রোগ্রাম

  3. পাইথনে অনন্য অক্ষরের সংযুক্ত স্ট্রিংয়ের দৈর্ঘ্য খুঁজে পেতে প্রোগ্রাম?

  4. পাইথনে ক্ষতিকারক রান-লেংথ এনকোডিংয়ের ন্যূনতম দৈর্ঘ্য খুঁজে বের করার জন্য প্রোগ্রাম