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

    有效字符串需满足:

    左括号必须用相同类型的右括号闭合。
    左括号必须以正确的顺序闭合。

    示例 1:

    输入:s = “()”
    输出:true
    示例 2:

    输入:s = “()[]{}”
    输出:true
    示例 3:

    输入:s = “(]”
    输出:false
    示例 4:

    输入:s = “([)]”
    输出:false
    示例 5:

    输入:s = “{[]}”
    输出:true

    提示:

    1 <= s.length <= 104
    s 仅由括号 ‘()[]{}’ 组成


    1. class Solution {
    2. public boolean isValid(String s) {
    3. int n = s.length();
    4. Deque<Character> stk = new LinkedList<>();
    5. for (int i = 0; i < n; ++i) {
    6. char c = s.charAt(i);
    7. if (c == '(') stk.addLast(')');
    8. else if (c == '{') stk.addLast('}');
    9. else if (c == '[') stk.addLast(']');
    10. else {
    11. if (stk.isEmpty()) return false;
    12. if (c != stk.pollLast()) return false;
    13. }
    14. }
    15. return stk.isEmpty();
    16. }
    17. }