括号生成
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;
}
}