কম্পিউটার টিউটোরিয়াল

পাইথনে ব্র্যাকেট ডেপথ অনুযায়ী ক্যারেক্টার কাউন্ট করা

একটি স্ট্রিংে শুধু X, (, ) থাকে। ব্র্যাকেট ব্যালেন্সড। প্রতিটি ডেপথে কতটি X আছে তা বের করুন (শ্যালো থেকে ডিপ)।

ইনপুট উদাহরণ

s = "(XXX(X(XX))XX)"

আউটপুট: [5, 1, 2]

অ্যালগরিদম

  1. depth = -1 দিয়ে শুরু করুন।
  2. ( পেলে ডেপথ বাড়ান, ) পেলে কমান।
  3. X পেলে সেই ডেপথের কাউন্ট বাড়ান।
  4. রেজাল্ট লিস্টে প্রতিটি ডেপথের কাউন্ট স্টোর করুন।

পাইথন কোড

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 = ম্যাক্স ডেপথ)।

  1. পাইথনে n জন মানুষ দিয়ে লাইট ফ্লিপ করলে অন অবস্থায় থাকা লাইটের সংখ্যা বের করার প্রোগ্রাম

  2. পাইথনে দুটি ম্যাপে ওভারল্যাপিং দ্বীপের সংখ্যা গণনা করার প্রোগ্রাম

  3. পাইথনে স্ট্রিং-এর সকল ভিন্ন উপস্ট্রিংয়ের সংখ্যা বের করার প্রোগ্রাম

  4. পাইথন প্রোগ্রাম - n নোড দিয়ে BST-এর সংখ্যা বের করুন