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

Python দিয়ে পেরেনথেসিস স্ট্রিং ব্যালেন্স করার জন্য মিনিমাম ইন্সারশন বের করার প্রোগ্রাম


মান লাগিয়ে, আমাদের একটি স্ট্রিং s আছে '(' এবং ')' পেরেনথেসিস সহ। একটি পেরেনথেসিস স্ট্রিং ব্যালেন্সড বলা হয় যখন:

  • যেকোনো বাম পেরেনথেসিস '(' এর সংশ্লিষ্ট দুটি folyamতি ডান পেরেনথেসিস '))' থাকে।
  • বাম পেরেনথেসিস '(' অবশ্যই সংশ্লিষ্ট দুটি folyamতি ডান পেরেনথেসিস '))' এর আগে থাকবে।

যেমন, "())", "())(())))" ব্যালেন্সড কিন্তু ")()", "()))" ব্যালেন্সড নয়। যদি এমন স্ট্রিং থাকে, তবে স্ট্রিং ব্যালেন্সড করার জন্য কতটি পেরেনথেসিস (খোলা বা বন্ধ) লাগবে তা গণনা করুন।

যেমন, ইনপুট s = "(())))))" হলে, আউটপুট হবে 1 কারণ যদি আমরা এটিকে ভাগ করি, তবে পাই "( ()) )) ))", তাই একটা বাম পেরেনথেসিস লাগবে স্ট্রিংকে "( ()) ()) ))" বানাতে যাতে সেটি ব্যালেন্সড হয়।

এটি সমাধান করতে আমরা নিচের ধাপগুলো অনুসরণ করব:

  • o := 0, n := s-এর আকার
  • ret := 0, i := 0
  • i < n থাকা পর্যন্ত:
    • যদি s[i] == '(' হয়, তবে o := o + 1
    • অন্যথায়:
      • যদি i + 1 < n এবং s[i + 1] == ')' হয়, তবে:
        • যদি o == 0 হয়, তবে ret := ret + 1
        • অন্যথায়, o := o - 1
        • i := i + 1
      • অন্যথায়:
        • ret := ret + 1
        • যদি o == 0 হয়, তবে ret := ret + 1
        • অন্যথায়, o := o - 1
        • i := i + 1
    • ret + 2 * o রিটার্ন করুন

    বेहतर বোঝার জন্য নিচের ইমপ্লিমেন্টেশন দেখুন:

    উদাহরণ

    def solve(s):
        o = 0
        n = len(s)
        ret = 0
        i = 0
        while i < n:
            if s[i] == '(':
                o += 1
            else:
                if i + 1 < n and s[i + 1] == ')':
                    if not o:
                        ret += 1
                    else:
                        o -= 1
                    i += 1
                else:
                    ret += 1
                    if not o:
                        ret += 1
                    else:
                        o -= 1
                i += 1
        return ret + 2 * o
    s = "(())))))"
    print(solve(s))

    ইনপুট

    "(())))))"

    আউটপুট

    3

  1. Python দিয়ে সব নোডে পৌঁছাতে মিনিমাম ভার্টেক্স বের করার প্রোগ্রাম

  2. Python দিয়ে অ্যারে সমান করার জন্য মিনিমাম অপারেশন বের করার প্রোগ্রাম

  3. Python দিয়ে n-তম বাইনারি স্ট্রিং-এ K-তম বিট বের করার প্রোগ্রাম

  4. Python দিয়ে বাইনারি গ্রিড সাজাতে মিনিমাম সোয়াপ বের করার প্রোগ্রাম