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

পাইথনে বাইনারি স্ট্রিং থেকে 10 বা 01 মুছে সর্বোচ্চ স্কোর পাওয়ার প্রোগ্রাম


মনে করুন আমাদের একটি বাইনারি স্ট্রিং s এবং দুটি মান zero_one এবং one_zero আছে। এখন একটি অপারেশন বিবেচনা করুন যেখানে আমরা যেকোনো সাবস্ট্রিং "01" মুচতে পারি এবং zero_one পয়েন্ট পেতে পারি। অথবা আমরা যেকোনো সাবস্ট্রিং "10" মুচতে পারি এবং one_zero পয়েন্ট পেতে পারি। আমাদের যেকোনো সংখ্যক অপারেশনের পর সর্বোচ্চ পয়েন্ট খুঁজে বের করতে হবে।

উদাহরণস্বরূপ, যদি ইনপুট হয় s = "10100101", zero_one = 3, one_zero = 2, তবে আউটপুট হবে 11, কারণ আমরা "01" তিনবার মুছে 3*3 = 9 পয়েন্ট পেতে পারি। তারপর অবশিষ্ট স্ট্রিংটি 10। এটি মুছে আমরা আরও 2 পয়েন্ট পেতে পারি, তাই মোট 11।

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

  • A := ইনপুট স্ট্রিং দিয়ে বিটের একটি তালিকা

  • যদি zero_one < one_zero, তবে

    • zero_one এবং one_zero সোয়াপ করুন

    • i = 0 থেকে A-এর আকার পর্যন্ত, করুন

      • A[i] := A[i] XOR 1

  • ans := 0

  • stack := একটি নতুন স্ট্যাক

  • A-এ প্রতিটি x-এর জন্য, করুন

    • যদি stack খালি না থাকে এবং stack-এর শীর্ষ উপাদান < x, তবে

      • stack থেকে পপ করুন

      • ans := ans + zero_one

    • অন্যথায়,

      • x কে stack-এ পুশ করুন

  • ans := ans + one_zero * stack-এ 0 এবং 1-এরঘটনার ন্যূনতম

  • ans রিটার্ন করুন

উদাহরণ (পাইথন)

বेहतर বোঝার জন্য নিচের বাস্তবায়নটি দেখুন:

class Solution:    def solve(self, S, zero_one, one_zero):       A = list(map(int, S))       if zero_one < one_zero:          zero_one, one_zero = one_zero, zero_one          for i in range(len(A)):             A[i] ^= 1          ans = 0          stack = []          for x in A:             if stack and stack[-1] < x:                stack.pop()                ans += zero_one             else:                stack.append(x)          ans += one_zero * min(stack.count(0), stack.count(1))          return ans ob = Solution() s = "10100101" zero_one = 3 one_zero = 2 print(ob.solve(s, zero_one, one_zero))

ইনপুট

"10100101", 3, 2

আউটপুট

11

  1. Python 3-এ Tkinter filedialog থেকে স্ট্রিং পাওয়ার পদ্ধতি

  2. পাইথনে বৃষ্টির পানি কতটুকু জমা রাখা যায় তা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে স্ট্রিং থেকে nth ক্যারেক্টার রিমুভ করা

  4. পাইথন প্রোগ্রাম: স্ট্রিং থেকে nth ক্যারেক্টার মুছে ফেলা