@yexiaoqi
2022-06-08T23:26:33.000000Z
字数 632
阅读 767
刷题 华为机试
题目:游戏规则:输入一个只包含英文字母的字符串,字符串中的俩个字母如果相邻且相同,就可以消除。在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。输出最终得到的字符串长度。
难度:*
输入描述:原始字符串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());}}
