1758. Minimum Changes to Make Alternating Binary String

1758. 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'`.

解题思路 #

• 简单题。利用数组下标奇偶交替性来判断交替字符串。交替字符串有 2 种，一个是 `'01010101……'` 还有一个是 `'1010101010……'`，这两个只需要计算出一个即可，另外一个利用 `len(s) - res` 就是答案。

代码 #

``````package leetcode

func minOperations(s string) int {
res := 0
for i := 0; i < len(s); i++ {
if int(s[i]-'0') != i%2 {
res++
}
}
return min(res, len(s)-res)
}

func min(a, b int) int {
if a > b {
return b
}
return a
}
``````

Apr 8, 2023