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