একটি বাইনারি স্ট্রিং দেওয়া আছে। এটিকে অল্টারনেটিং স্ট্রিং (০১০১... বা ১০১০...) বানাতে ন্যূনতম কতবার ফ্লিপ করতে হবে, তা বের করতে হবে।
উদাহরণ: binary="10011" হলে আউটপুট ২। "10101" বানাতে ২ ফ্লিপ লাগবে।
অ্যালগরিদম
- দুটি প্যাটার্ন চেক করুন: '0' দিয়ে শুরু এবং '1' দিয়ে শুরু
- প্রতিটি প্যাটার্নের জন্য ফ্লিপ কাউন্ট করুন
- ন্যূনতম ফ্লিপ কাউন্ট রিটার্ন করুন
ইমপ্লিমেন্টেশন
#include <bits/stdc++.h> using namespace std; char flip(char binaryDigit) { return binaryDigit == '0' ? '1' : '0'; } int getFlipCountToAlternateString(string binary, char expected) { int flipCount = 0; for (int i = 0; i < binary.length(); i++) { if (binary[i] != expected) flipCount++; expected = flip(expected); } return flipCount; } int main() { string binary = "10011"; cout << min(getFlipCountToAlternateString(binary, '0'), getFlipCountToAlternateString(binary, '1')) << endl; return 0; }আউটপুট
2