給定乙個數字n,生成包含2n括號的合法序列
n=3[((())), (()()), (())(), ()(()), ()()()]
public listgenerateparenthesis(int n )
private void generateall(char chars, listres,int pos)
return;
}chars[pos]='(';
generateall(chars,res,pos+1);
chars[pos]=')';
generateall(chars,res,pos+1);
}//判斷括號是否合法
private boolean isvaild(char chars) else
if (balance<0) return false;
}return balance==0;
}
/**
* 如果左括號數量不大於 nn,我們可以放乙個左括號。
* 如果右括號數量小於左括號的數量,我們可以放乙個右括號。
* 剪枝操作
*/public listgenerateparenthesis2(int n)
private void backtrack(listres, stringbuilder stringbuilder, int open, int close, int max)
if (openif (close}
合法的括號
給定字串,只包含以下括號 and 判斷輸入是否合法。括號匹配必按照要求 and 而不是 and 格式 輸入包含多行,每一行輸入乙個長度不超過80的字串,直到遇到結束符為止。每一行輸入只包含以上括號,如果合法,輸出true,否則false。輸入 輸出 false 解題思路 逐個遍歷,如果遇到左括號就壓...
生成n對括號的所有合法排列
例項 n 3,所有的合法序列 左括號的個數 右括號的個數left個左括號和right個右括號 如果right 0 並且 right left 列印右括號 vector generateparenthesis int n void generate int leftnum,int rightnum,s...
合法括號序列
合法括號序列 鍵盤上有左括號 右括號 和退格鍵 共三個鍵。牛牛希望按鍵n次,使得輸入的字串恰好乙個合法的括號序列。每按一次左括號 字串末尾追加乙個左括號 每按一次右括號 字串末尾追加乙個右括號 每按一次退格鍵 會刪掉字串的最後乙個字元,特別的,如果字串為空,牛牛也可以按退格,但是什麼都不會發生。輸出...