@yexiaoqi
2022-06-09T07:26:33.000000Z
字数 632
阅读 534
刷题
华为机试
题目:游戏规则:输入一个只包含英文字母的字符串,字符串中的俩个字母如果相邻且相同,就可以消除。在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。输出最终得到的字符串长度。
难度:*
输入描述:原始字符串str只能包含大小写英文字母,字母的大小写敏感,长度不超过100,输出游戏结束后字符串的长度。输入中包含非大小写英文字母是均为异常输入,直接返回0
示例一:
输入:mMbccbc
输出:3
说明:mMbccbc中可以先消除cc,此时变为mMbbc,再消除 bb 变成mMc,此时没有相同且相邻的字符,无法继续消除,最终得到字符串mMc,长度为3。
public class Main {
//方法1:正则替换,简单粗暴
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String s = sc.next();
if (Pattern.compile("[^a-zA-Z]+").matcher(s).find()){
System.out.println(0);
return;
}
int len = 0;
do {
int sLen = s.length();
//消除cc、ccc等
s = s.replaceAll("([a-zA-Z])\\1+", "");
len = sLen-s.length();
} while (len > 0);
System.out.println(s.length());
}
}