কম্পিউটার

পাইথনে প্রতিটি বন্ধনী গভীরতায় অক্ষরের সংখ্যা গণনা করার প্রোগ্রাম


ধরুন আমাদের একটি স্ট্রিং s আছে যা শুধুমাত্র তিনটি অক্ষর "X", "(", এবং ")" নিয়ে গঠিত। স্ট্রিংটিতে ভারসাম্যযুক্ত বন্ধনী রয়েছে এবং এর মধ্যে কিছু "X" রয়েছে এবং সম্ভবত নেস্টেড বন্ধনীও বারবার সেখানে থাকতে পারে। আমাদের বন্ধনীর প্রতিটি গভীরতায় s-এ "X" এর সংখ্যা খুঁজে বের করতে হবে, অগভীর গভীরতা থেকে শুরু করে গভীরতম গভীরতা পর্যন্ত।

সুতরাং, যদি ইনপুট s ="(XXX(X(XX))XX)" এর মত হয়, তাহলে আউটপুট হবে [5, 1, 2]

পাইথনে প্রতিটি বন্ধনী গভীরতায় অক্ষরের সংখ্যা গণনা করার প্রোগ্রাম

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • গভীরতা :=-1
  • আউট :=একটি নতুন তালিকা
  • s-এ প্রতিটি c-এর জন্য, করুন
    • যদি c "(" এর মত হয়, তাহলে
      • গভীরতা:=গভীরতা + 1
    • অন্যথায় যখন c ")" এর মত হয়, তখন
      • গভীরতা :=গভীরতা - 1
    • যদি গভীরতা আউটের আকারের সমান হয়, তাহলে
      • আউটের শেষে 0 ঢোকান
    • যদি c "X" এর মত হয়, তাহলে
      • আউট[গভীর] :=আউট[গভীর] + 1
  • রিটার্ন আউট

উদাহরণ

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

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]

  1. পাইথনে এন লোকেদের দ্বারা উল্টানো আলোর সংখ্যা গণনা করার প্রোগ্রাম

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

  3. পাইথনে s-এ স্বতন্ত্র সাবস্ট্রিংয়ের সংখ্যা গণনা করার জন্য প্রোগ্রাম

  4. পাইথনে n নোড সহ BST সংখ্যা গণনা করার প্রোগ্রাম