leetcode 20有效括号

leetcode 20有效括号

java

思路:
1.先判断长度是否为偶数,括号必须成对,长度必为偶数。
2.利用循环将数组压入栈中,括号起始必为左括号。
3.若不是左括号则判断栈是否为空,栈为空直接返回false
4.若不为空,判断栈顶是否与HashMap匹配,若匹配则出栈,不匹配则继续压入栈顶
5.栈若为空则全部匹配,结果为真

import java.util.*;

public class test02 {
    public static void main(String[] args) {
        System.out.println("请输入括号:");
        Scanner x = new Scanner(System.in);
        String s = x.nextLine();
        x.close();
        int i = s.length();
        if (i % 2 != 0){
            System.out.println("false");
        }else{
        	Stack<Character> st = new Stack<Character>();
            char[] c = s.toCharArray();
            System.out.println(c);
            Map<Character, Character> map = new LinkedHashMap<Character, Character>(){
                {
                    put('}','{');
                    put(']','[');
                    put(')','(');
                }
            };
            for (int j=0;j<i;j++){
                System.out.println("是否存在" + map.containsKey(c[j]));
                if (c[j] == '[' || c[j] == '{' || c[j] == '('){
                    st.push(c[j]);
                }else if(!st.empty()){
                    if (map.get(c[j])==st.peek()){
                        st.pop();
                    }else {
                        st.push(c[j]);
                    }
                }else {
                    System.out.println("false");
                }
            }
        }
        System.out.println(st.empty());
    }
}

你可能感兴趣的:(数据结构与算法,java,栈,leetcode)