मान लीजिए हमारे पास एक स्ट्रिंग s है जिसमें केवल तीन वर्ण "X", "(" , और ")" हैं। स्ट्रिंग में संतुलित ब्रैकेट हैं और बीच में कुछ "X" हैं साथ ही संभवतः नेस्टेड ब्रैकेट भी पुनरावर्ती रूप से हो सकते हैं। हमें s में ब्रैकेट की प्रत्येक गहराई पर "X" की संख्या ढूंढनी है, सबसे उथली गहराई से सबसे गहरी गहराई तक शुरू करके।
इसलिए, यदि इनपुट है s = "(XXX(X(XX))XX)", तो आउटपुट होगा [5, 1, 2]।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे:
depth := -1out :=एक नई सूचीsमें प्रत्येकcके लिए, करें:- यदि
c"("के समान है, तो:depth := depth + 1
- अन्यथा जब
c")"के समान है, तो:depth := depth - 1
- यदि
depthoutके आकार के समान है, तो:0कोoutके अंत में डालें
- यदि
c"X"के समान है, तो:out[depth] := out[depth] + 1
- यदि
outलौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
def solve(s):
depth = -1
out = []
for c in s:
if c == "(":
depth += 1
elif c == ")":
depth -= 1
if depth == len(out):
out.append(0)
if c == "X":
out[depth] += 1
return out
s = "(XXX(X(XX))XX)"
print(solve(s))
इनपुट
"(XXX(X(XX))XX)"
आउटपुट
[5, 1, 2]