大概意思就是消除相邻的两个相同的元素,如果消除之后剩下的仍然存在相邻的则,继续消除。:输出剩下元素的数量!
比如
输入 aabbcc
输出:0
输入 abddbc
输出:2
思路1:想到的是双指针,消除重复的值,但是bug太多,考虑的情况太多。
思路2:求出最大的回文串之后,长度想减,仍然灭有考虑周全,比如aabbcc,这种情况就会出bug,但是
思路三:也是时间过了自动交卷了,才想到的:
比如用栈的形式,如果相同就弹出知道最后没有为止!代码如下:
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
final String s = scanner.nextLine();
boolean flag = false;
Stack<Character> stack = new Stack<>();
stack.push(s.charAt(0));
for (int i = 1; i < s.length(); i++) {
if (!stack.isEmpty()) {
if (s.charAt(i) == stack.peek()) {
stack.pop();
} else {
stack.push(s.charAt(i));
}
}else {
stack.push(s.charAt(i));
}
}
System.out.println(stack.size());
}
测试结果:现在想来居然这么简单,然后但是就是想了这么久!