मान लीजिए हमारे पास एक स्ट्रिंग S है जिसमें केवल "I" (वृद्धि दर्शाने के लिए) या "D" (कमी दर्शाने के लिए) होता है, मान लें N = S का आकार। हमें [0, 1, ..., N] का कोई भी क्रमपरिवर्तन A लौटाना होगा जैसे कि रेंज 0, ..., N-1 में सभी i के लिए -
- यदि 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]