20. 有效的括号

图片说明

模拟栈

class Solution {
  public boolean isValid(String s) {
        if (s.length() == 0)
            return true;
        if ((s.length() & 1) == 1)
            return false;

        char f[] = new char[s.length()+1];
        int flag = 1;  //记录待放的符号
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(' || s.charAt(i) == '[' || s.charAt(i) == '{') {
                f[flag++] = s.charAt(i);
            }
            if (s.charAt(i) == ')' && f[--flag] != '(')
                return false;
            if (s.charAt(i) == ']' && f[--flag] != '[')
                return false;
            if (s.charAt(i) == '}' && f[--flag] != '{')
                return false;
            if(flag==0)return false;
        }
        if(flag!=1)return false;
        return true;
    }
}

也可以用栈

或者用计数 每扫描到右边 找出左边在哪里 并且减掉找左边的过程中其他左边

全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务