Formatted question description: https://leetcode.ca/all/1758.html

# 1758. Minimum Changes To Make Alternating Binary String

## Level

Easy

## Description

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

**Explanation:** s is already alternating.

**Example 3:**

**Input:** s = “1111”

**Output:** 2

**Explanation:** You need two operations to reach “0101” or “1010”.

**Constraints:**

`1 <= s.length <= 10^4`

`s[i]`

is either`'0'`

or`'1'`

.

## Solution

If the first character of an alternating string is determined, the whole string can be determined. The first character of an alternating string can be either `'0'`

or `'1'`

. Calculate the number of operations for both cases to make `s`

alternating, and return the minimum number of operations.

```
class Solution {
public int minOperations(String s) {
int op1 = 0, op2 = 0;
int length = s.length();
for (int i = 0; i < length; i++) {
char c = s.charAt(i);
if (i % 2 == 0) {
if (c == '1')
op1++;
else
op2++;
} else {
if (c == '1')
op2++;
else
op1++;
}
}
return Math.min(op1, op2);
}
}
```