একটি স্ট্রিংে শুধু X, (, ) থাকে। ব্র্যাকেট ব্যালেন্সড। প্রতিটি ডেপথে কতটি X আছে তা বের করুন (শ্যালো থেকে ডিপ)।
ইনপুট উদাহরণ
s = "(XXX(X(XX))XX)"
আউটপুট: [5, 1, 2]
অ্যালগরিদম
depth = -1দিয়ে শুরু করুন।(পেলে ডেপথ বাড়ান,)পেলে কমান।Xপেলে সেই ডেপথের কাউন্ট বাড়ান।- রেজাল্ট লিস্টে প্রতিটি ডেপথের কাউন্ট স্টোর করুন।
পাইথন কোড
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
# টেস্ট
print(solve("(XXX(X(XX))XX)")) # [5, 1, 2]
ব্যাখ্যা
- ডেপথ ০: ৫টি X (বাইরের ব্র্যাকেটের ভেতর)
- ডেপথ ১: ১টি X
- ডেপথ ২: ২টি X (গভীরতম নেস্টেড ব্র্যাকেট)
সময় জটিলতা: O(n), স্পেস: O(d) (d = ম্যাক্স ডেপথ)।