题解 | 括号生成

括号生成

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

import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return string字符串ArrayList
     */
    //一个很神奇的思路,字符串的一个前缀必须是左括号的数量大于右括号的数量,同时必须以左括号开始 右括号结束  
    ArrayList<String> res = new ArrayList<String> ();
    public void generateStr(int left,int right,StringBuilder str,int n){
        if(left == n && right == n){
            res.add(str.toString()); 
        }
        //增加左括号的情况
        if(left<n && left>=right){
            str.append('(');
            generateStr(left+1,right,str,n);
            // 一定要有回溯操作,比如,我现在是((  我要去增加()的场景,一定是先要吧目前左括号移除才能继续
            str.deleteCharAt(str.length()-1);

        }
        //增加右括号的情况
        if(right<n && left>=right){
            str.append(')');
            generateStr(left,right+1,str,n);
            str.deleteCharAt(str.length()-1);

        }
        return;

    }
    public ArrayList<String> generateParenthesis (int n) {
        // write code here
        StringBuilder substr = new StringBuilder();
        generateStr(0,0,substr,n);
        return res;
    }
}

全部评论

相关推荐

找个工作&nbsp;学历是要卡的&nbsp;要求是高的&nbsp;技能不足是真的&nbsp;实习经验是0的&nbsp;简历无处可写是事实的&nbsp;钱不好赚是真的&nbsp;想躺平又不敢躺&nbsp;也不甘心躺&nbsp;怕自己的灵感和才华被掩埋甚至从未被自己发现&nbsp;又质疑自己是否真正有才华
码农索隆:你现在啊,你心里都明白咋回事,但是你没办法改变现状,一想到未来,你又没有信心狠下心来在当下努力。 得走出这种状态,不能一直困在那里面,哪不行就去提升哪,你一动不动那指定改变不了未来,动起来,积少成多才能越来越好
点赞 评论 收藏
分享
自由水:笑死了,敢这么面试不敢让别人说
点赞 评论 收藏
分享
qq乃乃好喝到咩噗茶:院校后面加上211标签,放大加粗,招呼语也写上211
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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