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

পাইথনে স্ট্রিংয়ে সর্বোচ্চ সমবায়ন ব্র্যাকেট সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম


ধরা যাক s নামক একটি স্ট্রিং আছে যাতে '(' এবং ')' ব্র্যাকেট থাকে, আমাদের সমবায়ন ব্র্যাকেট সম্বলিত সর্বোচ্চ সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করতে হবে।

উদাহরণ: s = "())(()(" হলে আউটপুট 4, কারণ "()()" সাবসিকোয়েন্স নেওয়া যায়।

সমাধানের ধাপসমূহ

  • res := 0, n := len(s), close := 0
  • i = n-1 থেকে 0 পর্যন্ত রিভার্স লুপ:
    • যদি s[i] == ')' হয়, close := close + 1
    • অন্যথায়, যদি close > 0 হয়, close := close - 1, res := res + 2
  • res ফেরত দিন।

উদাহরণ কোড

class Solution:
    def solve(self, s):
        res = 0
        n = len(s)
        close = 0
        for i in range(n - 1, -1, -1):
            if s[i] == ")":
                close += 1
            else:
                if close > 0:
                    close -= 1
                    res += 2
        return res

ob = Solution()
s = "())(()("
print(ob.solve(s))

ইনপুট

"())(()("

আউটপুট

4
  1. পাইথনে সর্বোচ্চ ক্রমবর্ধমান সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে স্বতন্ত্র উপাদান সম্বলিত সর্বোচ্চ দীর্ঘ সাবলিস্টের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে অক্রমাগত অ্যারেতে সর্বোচ্চ ক্রমাগত সিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে দুটি স্ট্রিং থেকে সর্বোচ্চ অ্যানাগ্রাম সাবসিকোয়েন্সের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম