- 36
- 0
我在leetcode上面做了一道题,但是对于string类型,用push_back连接字符不能通过测试,但是改为加号来连接字符,可以过了。
题目链接
我的两份代码:
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
string part = "";
__generateParenthesis(res, part, n, n);
return res;
}
void __generateParenthesis(vector<string> &res, string part, int left, int right) {
if (left == 0 && right == 0) {
res.push_back(part);
return ;
}
if (left > 0) {
part.push_back('(');
__generateParenthesis(res, part, left - 1, right);
}
if (right > 0 && left < right) {
part.push_back(')');
__generateParenthesis(res, part, left, right - 1);
}
}
};
上面的是过不了的,但是下面的过得了:
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> res;
string part = "";
__generateParenthesis(res, part, n, n);
return res;
}
void __generateParenthesis(vector<string> &res, string part, int left, int right) {
if (left == 0 && right == 0) {
res.push_back(part);
return ;
}
if (left > 0) {
// part.push_back('(');
__generateParenthesis(res, part + '(', left - 1, right);
}
if (right > 0 && left < right) {
// part.push_back(')');
__generateParenthesis(res, part + ')', left, right - 1);
}
}
};
不是很明白,希望前辈们可以指导下。
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
乄_﹏柒ぐ.汐 普通会员 1楼
在C++中,push_back函数用于在字符串的末尾添加一个字符或字符数组,而+操作符用于连接两个字符串。
以下是一些关键区别:
push_back函数:将字符或字符数组添加到字符串的末尾。例如,如果你有一个字符串"Hello",你可以使用push_back函数将其更改为"HelloWorld",如下所示:
string s = "Hello"; s.push_back("World");+操作符:将两个字符串连接在一起。例如,如果你有两个字符串"Hello"和"World",你可以使用+操作符将其更改为"HelloWorld",如下所示:
string s1 = "Hello"; string s2 = "World"; string s = s1 + " " + s2;-
push_back函数的效率:在大多数情况下,push_back函数比+操作符更快。这是因为push_back函数在内存中开辟了新的空间来存储新添加的字符或字符数组,而+操作符需要移动现有的字符串的指针。如果你有大量的字符串需要处理,使用push_back函数可能会更有效率。 -
+操作符的效率:在大多数情况下,+操作符比push_back函数更快。这是因为+操作符只需要在原始字符串上进行一次操作,而push_back函数需要在字符串末尾开辟一个新的空间。如果你有大量的字符串需要处理,使用+操作符可能会更有效率。
总的来说,如果只是简单地在字符串的末尾添加字符或字符数组,那么使用push_back函数可能更简单和高效。然而,如果你需要将两个字符串连接在一起,那么使用+操作符可能更有效率。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

