@@ -26875,40 +26875,40 @@ func backtrack(left int, right int, track *string, res *[]string) {
26875
26875
```java
26876
26876
// by labuladong (java)
26877
26877
class Solution {
26878
- public:
26879
- vector<string > generateParenthesis(int n) {
26880
- if (n == 0) return {} ;
26878
+
26879
+ public List<String > generateParenthesis(int n) {
26880
+ if (n == 0) return new ArrayList<>() ;
26881
26881
// 记录所有合法的括号组合
26882
- vector<string > res;
26882
+ List<String > res = new ArrayList<>() ;
26883
26883
// 回溯过程中的路径
26884
- string track;
26884
+ StringBuilder track = new StringBuilder() ;
26885
26885
// 可用的左括号和右括号数量初始化为 n
26886
26886
backtrack(n, n, track, res);
26887
26887
return res;
26888
26888
}
26889
26889
26890
26890
// 可用的左括号数量为 left 个,可用的右括号数量为 rgiht 个
26891
26891
void backtrack(int left, int right,
26892
- string& track, vector<string>& res) {
26892
+ StringBuilder track, List<String> res) {
26893
26893
// 若左括号剩下的多,说明不合法
26894
26894
if (right < left) return;
26895
26895
// 数量小于 0 肯定是不合法的
26896
26896
if (left < 0 || right < 0) return;
26897
26897
// 当所有括号都恰好用完时,得到一个合法的括号组合
26898
26898
if (left == 0 && right == 0) {
26899
- res.push_back (track);
26899
+ res.add (track.toString() );
26900
26900
return;
26901
26901
}
26902
26902
26903
26903
// 尝试放一个左括号
26904
- track.push_back ('('); // 选择
26904
+ track.append ('('); // 选择
26905
26905
backtrack(left - 1, right, track, res);
26906
- track.pop_back( ); // 撤消选择
26906
+ track.deleteCharAt(track.length() - 1 ); // 撤消选择
26907
26907
26908
26908
// 尝试放一个右括号
26909
- track.push_back (')'); // 选择
26909
+ track.append (')'); // 选择
26910
26910
backtrack(left, right - 1, track, res);
26911
- track.pop_back( ); // 撤消选择
26911
+ track.deleteCharAt(track.length() - 1 ); // 撤消选择
26912
26912
}
26913
26913
}
26914
26914
```
0 commit comments