ধরুন আমাদের একটি স্ট্রিং S আছে যেটিতে শুধুমাত্র "I" (বৃদ্ধি বোঝাতে) বা "D" (হ্রাস বোঝাতে) আছে, আসুন N =S-এর আকার। আমাদের [0, 1, ...-এর যেকোন পারমুটেশন A ফেরত দিতে হবে। , N] যেমন 0, ..., N-1 -
রেঞ্জের সকল i এর জন্য- যদি S[i] হয় "I", তাহলে A[i]
- অন্যথায় যখন S[i] হয় "D", তখন A[i]> A[i+1]
সুতরাং, যদি ইনপুটটি "IDID" এর মত হয়, তাহলে আউটপুট হবে [0,4,1,3,2]
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- A :=0 থেকে N পর্যন্ত একটি তালিকা যেখানে N এর আকার S।
- res =একটি ফাঁকা তালিকা
- S-এ j প্রতিটি উপাদানের জন্য, করুন
- যদি j I হয়, তাহলে A থেকে শেষ উপাদান মুছে দিন এবং res এ সন্নিবেশ করুন
- অন্যথায় A-এর প্রথম উপাদান মুছে দিন এবং res-এ ঢোকান
- রিটার্ন রিটার্ন
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def diStringMatch(self, S): A=[i for i in range(len(S)+1)] return [A.pop((j=='I')-1) for j in S]+A ob = Solution() print(ob.diStringMatch("IDID"))
ইনপুট
"IDID"
আউটপুট
[0, 4, 1, 3, 2]