为了更好的阅读体检,可以查看我的算法学习网
本题在线评测链接:P1135
题目内容
塔子哥是一名程序员。一天,他收到了一份任务,需要对一个由三种字符组成的字符串进行操作。这三种字符分别是 'a'
、'b'
、'c'
。但是这个字符串并不是一个平衡串,因为其中 'a'
的数量并不等于 'b'
的数量加上 'c'
的数量。
于是,塔子哥开始思考如何将这个字符串变成一个平衡串,他可以进行一个操作,就是每次选择一个字符,将它改成另外两个字符中的一个。
塔子哥想知道,将该字符串变成平衡串的最小操作次数是多少?
输入描述
一个仅包含 'a'
、 'b'
、 'c'
三种字符的字符串,长度不超过
200000
200000
200000 。
字符串的长度保证是偶数。
输出描述
一个整数,代表最小的操作次数。可以证明,最终一定是有解的。
样例
样例一
输入
abcbacab
输出
1
样例二
输入
aacccccbbbbb
输出
4
思路
签到。题目等价于要求 a a a的个数是整个字符串的一半。扫一遍算一下即可。
代码
java
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
int cnt = 0;
for (int i = 0; i < s.length(); i++) {
if(s.charAt(i) == 'a') {
cnt++;
}
}
System.out.println(Math.abs(cnt - s.length()/2));
}
}
python
s = input()
cnt = 0
for x in s:
if x == 'a':
cnt += 1
print(abs(cnt - len(s) // 2))