ধরুন আমাদের একটি স্ট্রিং 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