题解 | #括号生成#

括号生成

http://www.nowcoder.com/practice/c9addb265cdf4cdd92c092c655d164ca

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param n int整型
     * @return string字符串ArrayList
     */
    public ArrayList<String> generateParenthesis (int n) {
        // write code here
        String str = new String();
        ArrayList<String> ans = new ArrayList<>();
        callBack(ans,str,n,0);
        return ans;
    }
    //left 左括号剩余数量,right 右括号剩余数量
    public void callBack(ArrayList<String> ans,String path,int left,int right){
        if(left == 0 && right == 0){
            ans.add(path);
            return;
        }
        //每次用一个左括号就增加一个右括号
        if(left>0){
            path = path + "(";
            int length = path.length();
            callBack(ans,path,left - 1,right + 1);
            path = path.substring(0,length-1);
            
        }
        if(right > 0){
            path = path + ")";
            int length = path.length();
            callBack(ans,path,left,right - 1);
            path = path.substring(0,length-1);
        }
    }
}
全部评论

相关推荐

07-24 12:30
湘潭大学 营销
点赞 评论 收藏
分享
06-07 17:17
嘉兴学院 教师
心爱的idea:你孩
点赞 评论 收藏
分享
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 18:34
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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