有效的括号

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:
1、左括号必须用相同类型的右括号闭合。
2、左括号必须以正确的顺序闭合。

解题步骤

package math;

import java.util.*;

public class Solution {
    public boolean isValid(String s){
        int n = s.length();
        if (n % 2 == 1){
            return false;
        }//字符串为单数返回false
        Map<Character, Character> pairs = new HashMap<Character, Character>(){{
            put(')','(');
            put(']','[');
            put('}','{');
        }}; //创建哈希表左右括号对应
        Deque<Character> stack = new LinkedList<Character>();  //创建栈
        for (int i = 0; i < n; i++){
            char ch = s.charAt(i);  //s字符串随下标输出对应字符
            if (pairs.containsKey(ch)){  //根据哈希表判断ch是否为右括号  containsKey(ch)表示哈希表里key为ch是否存在
                if (stack.isEmpty() || stack.peek()!=pairs.get(ch)){  //栈为空 或 栈顶不为左括号pairs.get(ch)取key为ch的值
                    return false;
                }
                stack.pop();  //将栈顶弹出
            } else {
                stack.push(ch);  //将ch字符入栈
            }
        }
        return stack.isEmpty();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容