算法:关于括号

括号生成

public List<String> generateParenthesis(int n) {
    List<String> res = new ArrayList<String>();
    helper("",res,0,0,n);
    return result;
}

public void helper(String tmp,List<String> res,int left,int right, int n) {
    if(left == n && right == n) {
        res.add(list);
        return;
    }
    if(left < n) {
        helper(list+"(",res,left+1,right,n);
    }
    if(left > right) {
        helper(list+")",res,left,right+1,n);
    }
}

最长有效括号

class Solution {
    public int longestValidParentheses(String s) {
        int l=0, r=0, res =0;
        char[] ss =s.toCharArray();
        for(int i=0; i<ss.length; i++) {
            if(ss[i] == '(')
                l++;
            else
                r++;
            if(l == r) {
                res = res>(l+r)? res:l+r;

            }
            else if(r > l) {
                l = 0;
                r = 0;
            }
        }
        l = r =0;
        for(int i=ss.length-1; i>=0; i--) {
            if(ss[i] == ')') 
                r++;
            else    
                l++;
            if(l == r) {
                res = res >(l+r) ? res:l+r;
            }
            else if(l > r) {
                l = r = 0;
            }
        }
        return res;
    }
}
全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务