• leetcode--Generate Parentheses


    Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

    For example, given n = 3, a solution set is:

    "((()))", "(()())", "(())()", "()(())", "()()()"

    public class Solution {
        /**In order to generate valid parenthesis, the number of 
    	 * "(" should not smaller than the number of ")". So, we use a List<Integer>
    	 * to save the number of "(". So the number of ")" can be calculated.
    	 * @param n --Integer, number of parentheses
    	 * @return List of valid parentheses strings
    	 * @author Averill Zheng
    	 * @version 2014-06-04
    	 * @since JDK 1.7
    	 */
        public List<String> generateParenthesis(int n) {
            List<String> validParen = new ArrayList<String>();
    		List<Integer> numberOfLeftParen = new ArrayList<Integer>();
    		if(n > 0){
    			validParen.add("(");
    			numberOfLeftParen.add(1);
    			for(int i = 2; i <= 2*n; ++i){
    				List<String> tempValidParen = new ArrayList<String>();
    				List<Integer> num = new ArrayList<Integer>();
    				int length = validParen.size();
    				for(int j = 0; j < length; ++j){
    					//the length of string in list now is i - 1
    					int leftParen = numberOfLeftParen.get(j); // it implies that number of ")" is i - 1 - leftParen					
    					String s = validParen.get(j);
    					if(leftParen == n){
    						tempValidParen.add(s + ")");
    						num.add(leftParen);
    					}
    					else if(leftParen <= (i - 1 - leftParen)){
    						tempValidParen.add(s + "(");
    						num.add(leftParen + 1);
    					}
    					else{
    						tempValidParen.add(s + "(");
    						num.add(leftParen + 1);
    						tempValidParen.add(s + ")");
    						num.add(leftParen);
    					}
    				}
    				validParen = tempValidParen;
    				numberOfLeftParen = num;
    			}
    		}
    		return validParen;
        }
    }
    

      

  • 相关阅读:
    Network (poj1144)
    C. Hongcow Builds A Nation
    ZYB loves Xor I(hud5269)
    D. Chloe and pleasant prizes
    Game(hdu5218)
    约瑟夫环的递推方法
    Misaki's Kiss again(hdu5175)
    Exploration(hdu5222)
    B. Arpa's weak amphitheater and Mehrdad's valuable Hoses
    C. Arpa's loud Owf and Mehrdad's evil plan
  • 原文地址:https://www.cnblogs.com/averillzheng/p/3772537.html
Copyright © 2020-2023  润新知