ধরুন আমাদের একটি বাইনারি স্ট্রিং s আছে, এখন আসুন আমরা একটি অপারেশন বিবেচনা করি যেখানে আমরা একটি বিট নির্বাচন করি এবং এর মান 0 থেকে 1 বা এর বিপরীতে ফ্লিপ করি। তিনটি অভিন্ন পরপর বিট ছাড়া একটি স্ট্রিং পেতে আমাদের ন্যূনতম সংখ্যক অপারেশনের প্রয়োজন খুঁজে বের করতে হবে৷
সুতরাং, যদি ইনপুটটি s ="10011100" এর মত হয়, তাহলে আউটপুট হবে 1, কারণ আমরা ইনডেক্স 4-এ 1 থেকে 0 বিট ফ্লিপ করতে পারি যাতে "10010100" স্ট্রিং তৈরি করা যায়, এখানে কোনো পরপর তিনটি অভিন্ন বিট নেই।
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- l :=0, গণনা :=0
- যখন l
- r :=l
- যদিও r
- r :=r + 1
উদাহরণ
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
def solve(s): l = 0 count = 0 while l < len(s): r = l while r < len(s) and s[r] == s[l]: r += 1 count += (r - l) // 3 l = r return count s = "10011100" print(solve(s))
ইনপুট
"10011100"
আউটপুট
1