ধরুন আমাদের একটি বাইনারি স্ট্রিং s আছে। আসুন আমরা একটি অপারেশন বিবেচনা করি যেখানে আমরা কিছুটা উল্টাতে পারি। দুটি সন্নিহিত অক্ষর একই না হলে স্ট্রিং s কে বিকল্প স্ট্রিং বলা হয়। আমাদের s বিকল্প করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করতে হবে।
সুতরাং, যদি ইনপুটটি s ="11100011" এর মত হয়, তাহলে আউটপুট হবে 3 কারণ আমরা যদি 1, 4 এবং 7 অবস্থানে বিটগুলি ফ্লিপ করি, তাহলে, এটি হবে "10101010", তাহলে সবগুলিই পর্যায়ক্রমে হয়৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
-
পরিবর্তন :=0
-
even_1 :=0, even_0 :=0
-
odd_1 :=0, odd_0 :=0
-
i এর জন্য 0 থেকে s - 1 এর আকারের মধ্যে, করুন
-
যদি আমি সমান হয়, তাহলে
-
যদি s[i] '1' এর মত হয়, তাহলে
-
even_1 :=even_1 + 1
-
-
অন্যথায়,
-
even_0 :=even_0 + 1
-
-
-
অন্যথায়,
-
যদি s[i] '1' এর মত হয়, তাহলে
-
odd_1 :=odd_1 + 1
-
-
অন্যথায়,
-
odd_0 :=odd_0 + 1
-
-
-
-
যদি (even_1+odd_0)> (even_0+odd_1), তারপর
-
পরিবর্তন :=even_0 + odd_1
-
-
অন্যথায়,
-
পরিবর্তন :=even_1 + odd_0
-
-
রিটার্ন পরিবর্তন
উদাহরণ (পাইথন)
আরও ভালোভাবে বোঝার জন্য আসুন আমরা নিম্নলিখিত বাস্তবায়ন দেখি &minnus;
def solve(s): change = 0 even_1 = 0 even_0 = 0 odd_1 = 0 odd_0 = 0 for i in range(len(s)): if(i%2 == 0): if(s[i]=='1'): even_1 +=1 else: even_0 +=1 else: if(s[i] == '1'): odd_1 +=1 else: odd_0 +=1 if((even_1+odd_0)>(even_0+odd_1)): change = even_0 + odd_1 else: change = even_1 + odd_0 return change s = "11100011" print(solve(s))
ইনপুট
"11100011"
আউটপুট
3