# LeetCode 1758. Minimum Changes To Make Alternating Binary String

## Description

https://leetcode.com/problems/minimum-changes-to-make-alternating-binary-string/

You are given a string `s` consisting only of the characters `'0'` and `'1'`. In one operation, you can change any `'0'` to `'1'` or vice versa.

The string is called alternating if no two adjacent characters are equal. For example, the string `"010"` is alternating, while the string `"0100"` is not.

Return the minimum number of operations needed to make `s` alternating.

Example 1:

```Input: s = "0100"
Output: 1
Explanation: If you change the last character to '1', s will be "0101", which is alternating.
```

Example 2:

```Input: s = "10"
Output: 0
```

Example 3:

```Input: s = "1111"
Output: 2
Explanation: You need two operations to reach "0101" or "1010".
```

Constraints:

• `1 <= s.length <= 104`
• `s[i]` is either `'0'` or `'1'`.

## Explanation

There are two Alternating Binary Strings: one starts with ‘0’, the other starts with ‘1’. We can check which one we can use minimum operations to convert the s to.

## Python Solution

``````class Solution:
def minOperations(self, s: str) -> int:

s_arr = list(s)

zero_start_arr = ['0' if i % 2 else '1' for i in range(len(s))]
one_start_arr = ['1' if i % 2 else '0' for i in range(len(s))]

min_count = sys.maxsize

zero_start_count = 0
for c, z_c in zip(s_arr, zero_start_arr):
if c != z_c:
zero_start_count += 1

one_start_count = 0
for c, o_c in zip(s_arr, one_start_arr):
if c != o_c:
one_start_count += 1

return min(one_start_count, zero_start_count)``````
• Time Complexity: O(N).
• Space Complexity: O(N).