[关闭]
@yexiaoqi 2022-06-08T23:26:33.000000Z 字数 632 阅读 420

60. 字符串消消乐

刷题 华为机试


题目:游戏规则:输入一个只包含英文字母的字符串,字符串中的俩个字母如果相邻且相同,就可以消除。在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。输出最终得到的字符串长度。

难度:*

输入描述:原始字符串str只能包含大小写英文字母,字母的大小写敏感,长度不超过100,输出游戏结束后字符串的长度。输入中包含非大小写英文字母是均为异常输入,直接返回0

示例一

输入:mMbccbc
输出:3
说明:mMbccbc中可以先消除cc,此时变为mMbbc,再消除 bb 变成mMc,此时没有相同且相邻的字符,无法继续消除,最终得到字符串mMc,长度为3。

  1. public class Main {
  2. //方法1:正则替换,简单粗暴
  3. public static void main(String[] args) {
  4. Scanner sc = new Scanner(System.in);
  5. String s = sc.next();
  6. if (Pattern.compile("[^a-zA-Z]+").matcher(s).find()){
  7. System.out.println(0);
  8. return;
  9. }
  10. int len = 0;
  11. do {
  12. int sLen = s.length();
  13. //消除cc、ccc等
  14. s = s.replaceAll("([a-zA-Z])\\1+", "");
  15. len = sLen-s.length();
  16. } while (len > 0);
  17. System.out.println(s.length());
  18. }
  19. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注