## 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:1Explanation:If you change the last character to '1', s will be "0101", which is alternating.

**Example 2:**

Input:s = "10"Output:0Explanation:s is already alternating.

**Example 3:**

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

**Constraints:**

`1 <= s.length <= 10`

^{4}`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).