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