Minimum Changes To Make Alternatign 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
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 <= 104
s[i] is either '0' or '1'.
思路一:对于正确的结果,完全分类,只存在下面两种情况
- 1 开头
- 0 开头
只需要遍历字符然后比较这两种哪种修改最小
public int minOperations(String s) {
char[] chars = s.toCharArray();
int count1 = 0;
int count2 = 0;
char a = '0';
char b = '1';
for (char aChar : chars) {
if (aChar != a) count1++;
if (aChar != b) count2++;
a = (a == '0') ? '1' : '0';
b = (b == '1') ? '0' : '1';
}
return Math.min(count1, count2);
}
标签:alternating,string,int,char,easy,1758,Input,aChar,leetcode
From: https://www.cnblogs.com/iyiluo/p/16832016.html