মান লেই একটি স্ট্রিং S আছে যেটা শুধু "I" (বৃদ্ধি বোঝাতে) বা "D" (হ্রাস বোঝাতে) ধারণ করে, N = S-এর সাইজ। আমাদের [0, 1, ..., N]-এর যেকোনো পারমুটেশন A রিটার্ন করতে হবে যাতে সব i = 0, ..., N-1 এর জন্য −
- যদি S[i] = "I" হয়, তবে A[i] < A[i+1]
- অন্যথায় যদি 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-এ ইনসার্ট
- 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]