题目描述:
- 输入一个只包含英文字母的字符串,字符串中的俩个字母如果相邻且相同,就可以消除。
- 在字符串上反复执行消除的动作,直到无法继续消除为止,此时游戏结束。
- 输出最终得到的字符串长度。
输入描述:
- 原始字符串只能包含大小写英文字母,字母的大小写敏感,长度不超过100。
输出描述:
- 输出游戏结束后字符串的长度
说明:
- 输入中包含非大小写英文字母是均为异常输入,直接返回0。
示例:
输入:
- mMbccbc
输出:
- 3
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
int a = clear(str);
System.out.println(a);
}
private static int clear(String str) {
StringBuilder stack = new StringBuilder();
int head = -1;
for (int i = 0; i < str.length(); i++) {
if (stack.length() > 0) {
if (stack.charAt(head) == str.charAt(i)) {
stack.deleteCharAt(head);
head--;
continue;
}
}
stack.append(str.charAt(i));
head++;
}
return stack.length();
}
}
该题解题思想利用了堆栈先进后出的思想