easy 1758. Minimum Changes To Make Alternating Binary String
실패
public int minOperations(String str) {
StringBuilder builder = new StringBuilder(str);
int length = str.length();
int count = 0;
int first = builder.charAt(0) - '0', second;
for (int i = 1; i < length; i++) {
second = builder.charAt(i) - '0';
if (first == second) {
if (second == 1) {
builder.setCharAt(i, '0');
} else {
builder.setCharAt(i, '1');
}
count++;
}
first = builder.charAt(i) - '0';
}
return count;
}
first==second
이면 second
를 다른 글자로 바꾼다.StringBuilder.setCharAt(index, '-')
를 사용하면 문자열에서 특정 인덱스의 문자를 바꿀 수 있다.성공
public int minOperations(String str) {
int length = str.length();
int even = 0, odd = 0;
for (int i = 0; i <length; i++) {
int x = str.charAt(i) - '0';
if (i % 2 == 0 && x == 1) {
even++;
} else if (i % 2 == 1 && x == 0) {
odd++;
}
}
return Math.min(length - (odd + even), odd + even);
}
01010101...
혹은 101010...
이다.even
: 짝수번째 글자가 0인 경우의 수odd
: 홀수번째 글자가 1인 경우의 수length - (odd + even)
: 1010..로 바꿀 때 필요한 연산의 수odd + even
: 0101..으로 바꿀 때 필요한 연산의 수