leetcode 22. Generate Parentheses

来源:互联网 发布:程序与算法 编辑:程序博客网 时间:2024/06/16 03:39


一个效率极低的版本:bfs  权当作复习了

import java.util.ArrayList;import java.util.List;import java.util.Stack;public class Solution {public static void main(String[] args){Solution s = new Solution();List<String> r = s.generateParenthesis(3);}    public List<String> generateParenthesis(int n) {        List<String> res = new ArrayList<String>();        String s = "";        char[] cand = {'(',')'};        genThesis("",res,n,cand);        return res;    }        public void genThesis(String prefix,List<String> res,int n,char[] cand){  // bfs        if(prefix.length()>2*n)  return;    if(isAllValid(prefix)&&prefix.length()==2*n){             res.add(prefix);                   }else{            for(int i=0;i<2;i++){                if(isPartValid(prefix+cand[i]))                genThesis(prefix+cand[i],res,n,cand);            }        }    }            public boolean isAllValid(String s) {       Stack<Character> stack = new Stack<Character>();       for(char c :s.toCharArray()){           if(c=='(')  stack.add(')');  //            else if(stack.size()==0||stack.pop()!=c)             return false;       }       if(stack.size()>0)  return false;       return true;    }            public boolean isPartValid(String s) {       Stack<Character> stack = new Stack<Character>();       for(char c :s.toCharArray()){           if(c=='(')  stack.add(')');  //            else if(stack.size()==0||stack.pop()!=c)             return false;       }       return true;    }}


0 0
原创粉丝点击