मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें केवल तीन वर्ण "X", "(", और ")" हैं। स्ट्रिंग में संतुलित कोष्ठक होते हैं और कुछ "X" के बीच में संभावित रूप से नेस्टेड कोष्ठक भी पुनरावर्ती रूप से हो सकते हैं। हमें s में कोष्ठक की प्रत्येक गहराई पर "X" की संख्या ज्ञात करनी है, जो सबसे कम गहराई से शुरू होकर सबसे गहरी गहराई तक है।
इसलिए, यदि इनपुट s ="(XXX(X(XX))XX)" जैसा है, तो आउटपुट [5, 1, 2]
होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- गहराई :=-1
- बाहर:=एक नई सूची
- प्रत्येक c in s के लिए, करें
- यदि c "(" के समान है, तो
- गहराई :=गहराई + 1
- अन्यथा जब c ")" के समान हो, तब
- गहराई:=गहराई - 1
- यदि गहराई आउट के आकार के समान है, तो
- आउट के अंत में 0 डालें
- यदि c "X" के समान है, तो
- बाहर[गहराई] :=बाहर[गहराई] + 1
- यदि c "(" के समान है, तो
- वापसी
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
डीईएफ़ सॉल्व (एस):डेप्थ =-1 आउट =[] सी इन एस के लिए:अगर सी =="(":डेप्थ + =1 एलिफ सी ==")":डेप्थ - =1 अगर डेप्थ ==लेन (आउट):आउट.एपेंड (0) अगर सी =="एक्स":आउट [गहराई] + =1 रिटर्न आउट ="(एक्सएक्सएक्स (एक्स (एक्सएक्स)) एक्सएक्स)" प्रिंट (समाधान (एस)) पूर्व>इनपुट
"(XXX(X(XX))XX)"आउटपुट
[5, 1, 2]