注册一亩三分地论坛,查看更多干货!
您需要 登录 才可以下载或查看附件。没有帐号?注册账号
x
本帖最后由 nibuxing 于 2014-10-31 08:04 编辑
题目是: 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: "((()))", "(()())", "(())()", "()(())", "()()()"
这段是可以通过的代码,但我如果把String换成StringBuffer就会超时,是为啥?- import java.util.ArrayList;
- public class Solution {
- public ArrayList<String> generateParenthesis(int n) {
- ArrayList<String> result = new ArrayList<String>();
- if(n <= 0) return result;
- generateParen(result, n, n, "");
- return result;
- }
- private void generateParen(ArrayList<String> result, int leftRemain, int rightRemain, String sb){
- if(leftRemain < 0 || rightRemain < 0 || leftRemain > rightRemain) return;
- if(leftRemain == 0 && rightRemain == 0){
- result.add(sb);
- } else {
- generateParen(result, leftRemain - 1, rightRemain, sb+"(");
- generateParen(result, leftRemain, rightRemain - 1, sb+")");
- }
- }
- }
复制代码 这是换成StringBuffer的代码- public ArrayList<String> generateParenthesis(int n) {
- ArrayList<String> result = new ArrayList<String>();
- if(n <= 0) return result;
- generateParen(result, n, n, new StringBuffer());
- return result;
- }
- private void generateParen(ArrayList<String> result, int leftRemain, int rightRemain, StringBuffer sb){
- if(leftRemain < 0 || rightRemain < 0 || leftRemain > rightRemain) return;
- if(leftRemain == 0 && rightRemain == 0){
- result.add(sb.toString());
- } else {
- generateParen(result, leftRemain - 1, rightRemain, sb.append("("));
- generateParen(result, leftRemain, rightRemain - 1, sb.append(")"));
- }
- }
复制代码 |