給出一個偶數(shù)能耻,獲取所有的括號組合

現(xiàn)在給出一個偶數(shù)n赏枚,要求打印出所有的括號的組合,括號有兩種晓猛,分別是()
要求: 左括號右邊一定得有一右括號和它對應(yīng)饿幅,右括號的左邊也一定有一個左括號對應(yīng),舉個例子戒职,當(dāng)n=2的時候栗恩,只有()這種情況,)(這種情況是不可行的。

這個問題聽起來其實有點類似于給你一個數(shù)洪燥,比如10磕秤,然后打印出所有的二進制的可能性乳乌。

分析

那么,拿到手后亲澡,首先是進行簡單的分析钦扭,有左括號纫版,一定有一個右括號對應(yīng)床绪,而且必須是一對對的,那么可以有以下結(jié)論:

  1. 任意一個位置的左側(cè)的左括號的數(shù)量 大于等于 右括號的數(shù)量(第一個位置那么就肯定是左括號了)
  2. 任意一個位置的左側(cè)其弊,左括號的數(shù)量 小于等于 n/2

那么就可以通過這兩點來進行遞歸的判斷癞己,代碼如下:

function getSynbols(number, sumOnly, left, right, str, arr) {
    arr = arr == undefined ? (sumOnly ? [0] : []) : arr;
    left = left || 0;
    right = right || 0;
    str = str || '';
    let half = number / 2;
    if (right + left == number) {
        if (sumOnly) {
            arr[0]++;
        } else {
            arr.push(str);
        }
    } else {
        if (number % 2 == 0) {
            if (left < half) {
                getSynbols(number, sumOnly, left + 1, right, str + "(", arr);
                if (left > 0 && right < left) getSynbols(number, sumOnly, left, right + 1, str + ")", arr);
            } else {
                getSynbols(number, sumOnly, left, right + 1, str + ")", arr);
            }
        } else {
            console.log("請輸入一個偶數(shù)");
        }
    }
    return arr;
};

這里的參數(shù)說明如下:

  1. number 表示輸入的數(shù),這個數(shù)字必須是偶數(shù)梭伐。
  2. sumOnly 表示是否只統(tǒng)計數(shù)量痹雅,而不將結(jié)果存儲到數(shù)組中(防止數(shù)量太大,撐爆內(nèi)存)
  3. left 表示左括號的數(shù)量
  4. right 表示右括號的數(shù)量
  5. str 表示當(dāng)前的已經(jīng)拼接的字符串
  6. arr 存放結(jié)果的數(shù)組
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末糊识,一起剝皮案震驚了整個濱河市绩社,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赂苗,老刑警劉巖愉耙,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異拌滋,居然都是意外死亡朴沿,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門败砂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來赌渣,“玉大人,你說我怎么就攤上這事昌犹〖嵛撸” “怎么了?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵斜姥,是天一觀的道長鸿竖。 經(jīng)常有香客問我,道長疾渴,這世上最難降的妖魔是什么千贯? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮搞坝,結(jié)果婚禮上搔谴,老公的妹妹穿的比我還像新娘。我一直安慰自己桩撮,他們只是感情好敦第,可當(dāng)我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布峰弹。 她就那樣靜靜地躺著,像睡著了一般芜果。 火紅的嫁衣襯著肌膚如雪鞠呈。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天右钾,我揣著相機與錄音蚁吝,去河邊找鬼。 笑死舀射,一個胖子當(dāng)著我的面吹牛窘茁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播脆烟,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼山林,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了邢羔?” 一聲冷哼從身側(cè)響起驼抹,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拜鹤,沒想到半個月后框冀,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡署惯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年左驾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片极谊。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡诡右,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出轻猖,到底是詐尸還是另有隱情帆吻,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布咙边,位于F島的核電站猜煮,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏败许。R本人自食惡果不足惜王带,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望市殷。 院中可真熱鬧愕撰,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至囱桨,卻和暖如春仓犬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舍肠。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工搀继, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人貌夕。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓律歼,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啡专。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內(nèi)容