纪念一次面试机试失败的题目:

大概意思就是消除相邻的两个相同的元素,如果消除之后剩下的仍然存在相邻的则,继续消除。:输出剩下元素的数量!

 

比如

输入  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());

    }

测试结果:现在想来居然这么简单,然后但是就是想了这么久!

上一篇:389,两个超级大数相加


下一篇:leetcode 394 字符串解码.