কম্পিউটার

পাইথনে পরিবর্তনের পর সর্বাধিক বাইনারি স্ট্রিং খুঁজে বের করার জন্য প্রোগ্রাম


ধরুন আমাদের একটি বাইনারি স্ট্রিং আছে। আমরা নিচের প্রতিটি ক্রিয়াকলাপ যে কোনো সংখ্যক বার প্রয়োগ করতে পারি −

  • যদি সংখ্যাটিতে একটি সাবস্ট্রিং "00" থাকে, তাহলে আমরা এটিকে "10" দিয়ে প্রতিস্থাপন করতে পারি।

  • যদি সংখ্যাটিতে একটি সাবস্ট্রিং "10" থাকে, তাহলে আমরা এটিকে "01" দিয়ে প্রতিস্থাপন করতে পারি।

তারপরে আমাদের সর্বাধিক বাইনারি (এর সাংখ্যিক মানের উপর ভিত্তি করে) স্ট্রিংটি খুঁজে বের করতে হবে যা আমরা অনেক সংখ্যক অপারেশন পেতে পারি।

সুতরাং, যদি ইনপুটটি s ="001100" এর মত হয়, তাহলে আউটপুট হবে 111011, কারণ আমরা (00)1100 -> 101(10)0 -> 1010(10) -> 10(10)01 - এর মতো স্থানান্তর করতে পারি।> 100(10)1 -> 1(00)011 -> 111011।

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

  • দৈর্ঘ্য :=s এর আকার
  • শূন্য :=s-এ 0 এর সংখ্যা
  • যদি শূন্য হয় <2, তাহলে
    • রিটার্ন এস
  • s :=s-এর বাম থেকে সমস্ত '1' মুছে ফেলুন
  • leading_ones :=দৈর্ঘ্য - s এর আকার
  • leading_ones :=leading_ones + zeros - 1
  • trailing_ones :=length - leading_ones - 1
  • উত্তর_বাম :=অগ্রণী_এক নম্বর 1s
  • উত্তর_রাইট :=1s এর trailing_ones সংখ্যা
  • উত্তর_বাম সমন্বিত 0 সমন্বিত উত্তর_ডান এবং প্রত্যাবর্তন করুন

উদাহরণ

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

def solve(s):
   length = len(s)
   zeros = s.count('0')
   if zeros < 2:
      return s
   s = s.lstrip('1')
   leading_ones = length - len(s)
   leading_ones += zeros - 1
   trailing_ones = length - leading_ones - 1
   answer_left = '1' * leading_ones
   answer_right = '1' * trailing_ones
   return ''.join([answer_left, '0', answer_right])

s = "001100"
print(solve(s))

ইনপুট

"001100"

আউটপুট

111011

  1. পাইথনে একই দৈর্ঘ্যের k ফিতার সর্বাধিক দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সর্বোচ্চ বিল্ডিং উচ্চতা খুঁজে বের করার প্রোগ্রাম

  3. পাইথনে একটি বাইনারি গাছের সর্বাধিক প্রস্থ খুঁজে বের করার প্রোগ্রাম

  4. একটি স্ট্রিং মধ্যে মিরর অক্ষর খুঁজে পেতে পাইথন প্রোগ্রাম