算法4th 1.3.4 使用栈判定其中的括号是否配对完整

public class Parentheses {
    public static void main(String[] args) {
        Stack<String> s = new Stack<>();
        String string = StdIn.readString();
        String[] inputs = string.split(""); //获取每一个字符
        for (String input : inputs){
            if (input.equals("{")||input.equals("(")||input.equals("[")){
                s.push(input);
            }else if (!s.isEmpty()){
                if (input.equals("}")){
                    if (!s.pop().equals("{")){
                        System.out.println(false);
                        break;
                    }
                }
                if (input.equals(")")){
                    if (!s.pop().equals("(")){
                        System.out.println(false);
                        break;
                    }
                }
                if (input.equals("]")){
                    if (!s.pop().equals("[")){
                        System.out.println(false);
                        break;
                    }
                }
            }
        }
        if (s.isEmpty()){
            System.out.println(true);
        }
    }
}
解题思路:
如果输入的是左括号就压栈
如果输入的是右括号就获取栈顶元素并判断是否和右括号配对
如果出栈元素与输入元素不配对 则配对错误
如果配对成功,此时所有元素都应该出栈,栈为空
posted @ 2020-06-30 18:49  硬盘红了  阅读(133)  评论(0编辑  收藏  举报