手撕算法:LeetCode 20.有效的括号

·  阅读 330

题目:LeetCode 20.有效的括号

LeetCode链接: LeetCode 2.两数相加 https://leetcode-cn.com/problems/valid-parentheses

审题

题目重点:只会有括号,之前以为会有字母,所以代码写复杂了。

解题

代码

public boolean isValid(String s) {
    Map<Character, Character> map = new HashMap();
    map.put(']','[');
    map.put('}','{');
    map.put(')','(');
    char cc[] = s.toCharArray();
    Stack stack = new Stack();
    for(int i = 0;i<cc.length; i++){
        if(map.containsKey(cc[i])){
            if(stack.isEmpty()){
                return false;
            }
            if(stack.pop()!=map.get(cc[i])){
                return false;
            }
        }else{
            stack.push(cc[i]);
        }
    }
    return stack.isEmpty();
}
复制代码

复杂度

  • 时间复杂度O(n):循环s长度。
  • 空间复杂度O(n):都是左边的括号,栈深度为n。

易错点

  • 多写几遍就好了
分类:
阅读
标签:
收藏成功!
已添加到「」, 点击更改