Algorithm-Generate Parentheses

Algorithm Generate Parentheses

Description

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:

[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

Submission

package com.cctoken.algorithm;

import java.util.LinkedList;
import java.util.List;

/**
 * @author chenchao
 */
public class GenerateParentheses {
  public List<String> generateParenthesis(int n) {
    List<String> res = new LinkedList<String>();

    backTracking(res, "", 0, 0, n);
    return res;
  }

  public void backTracking(List<String> res, String solution, int leftUsed, int rightUsed, int max) {
    if (solution.length() == max * 2) {
      res.add(solution);
      return;
    }

    if (leftUsed < max) {
      backTracking(res, solution + "(", leftUsed + 1, rightUsed, max);
    }
    if (rightUsed < leftUsed) {
      backTracking(res, solution + ")", leftUsed, rightUsed + 1, max);
    }
  }

  public static void main(String[] args) {
    List<String> allResults = new GenerateParentheses().generateParenthesis(3);
    for (String result : allResults) {
      System.out.println(result);
    }
  }

}

Solution

回溯法舅逸,這里提供一個(gè)YouTubehttps://www.youtube.com/watch?v=sz1qaKt0KGQ
的鏈接支子,非常值得學(xué)習(xí)者冤,思路很清晰
這道題,給定輸入值n肮帐,需要列舉出所有 "(" 和 ")"可能的組合序列,n為()的對(duì)數(shù),必須滿足這樣的一個(gè)約束條件关串,well-formed,即杂穷,字符串中悍缠,右括號(hào)的左側(cè)必須有一個(gè)對(duì)應(yīng)的左括號(hào),與之閉合耐量。
那么我們最終的解決場(chǎng)景就是飞蚓,有2*n個(gè)位置,需要放置 左括號(hào) 和 右括號(hào)廊蜒,同時(shí)必須滿足 well-formed的條件趴拧,此處采用回溯法
我們?cè)诜胖?左括號(hào)時(shí)必須滿足的條件是,左括號(hào)已經(jīng)使用的數(shù)量小于總的n山叮,在放置右括號(hào)時(shí)著榴,右括號(hào)使用的數(shù)量必須小于左括號(hào)使用的數(shù)量。
那么終止條件就是 當(dāng)前字符串的位置已經(jīng)占滿了屁倔,基于這個(gè)思路脑又,可以得到上述的答案

image.png
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锐借,隨后出現(xiàn)的幾起案子问麸,更是在濱河造成了極大的恐慌,老刑警劉巖钞翔,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件严卖,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡布轿,警方通過查閱死者的電腦和手機(jī)哮笆,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)汰扭,“玉大人稠肘,你說(shuō)我怎么就攤上這事《遥” “怎么了启具?”我有些...
    開封第一講書人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)珊泳。 經(jīng)常有香客問我鲁冯,道長(zhǎng)拷沸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任薯演,我火速辦了婚禮撞芍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘跨扮。我一直安慰自己序无,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開白布衡创。 她就那樣靜靜地躺著帝嗡,像睡著了一般。 火紅的嫁衣襯著肌膚如雪璃氢。 梳的紋絲不亂的頭發(fā)上哟玷,一...
    開封第一講書人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音一也,去河邊找鬼巢寡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛椰苟,可吹牛的內(nèi)容都是我干的抑月。 我是一名探鬼主播,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼舆蝴,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谦絮!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起洁仗,我...
    開封第一講書人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挨稿,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后京痢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡篷店,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年祭椰,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疲陕。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡方淤,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蹄殃,到底是詐尸還是另有隱情携茂,我是刑警寧澤,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布诅岩,位于F島的核電站讳苦,受9級(jí)特大地震影響带膜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜鸳谜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一膝藕、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咐扭,春花似錦芭挽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至薛闪,卻和暖如春辛馆,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背逛绵。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工怀各, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人术浪。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓瓢对,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親胰苏。 傳聞我的和親對(duì)象是個(gè)殘疾皇子硕蛹,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

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