账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    对于string类型,用push_back和直接用 + 连接字符有什么区别?
    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函数用于在字符串的末尾添加一个字符或字符数组,而+操作符用于连接两个字符串。

      以下是一些关键区别:

      1. push_back函数:将字符或字符数组添加到字符串的末尾。例如,如果你有一个字符串"Hello",你可以使用push_back函数将其更改为"HelloWorld",如下所示:

      string s = "Hello"; s.push_back("World");

      1. +操作符:将两个字符串连接在一起。例如,如果你有两个字符串"Hello"和"World",你可以使用+操作符将其更改为"HelloWorld",如下所示:

      string s1 = "Hello"; string s2 = "World"; string s = s1 + " " + s2;

      1. push_back函数的效率:在大多数情况下,push_back函数比+操作符更快。这是因为push_back函数在内存中开辟了新的空间来存储新添加的字符或字符数组,而+操作符需要移动现有的字符串的指针。如果你有大量的字符串需要处理,使用push_back函数可能会更有效率。

      2. +操作符的效率:在大多数情况下,+操作符比push_back函数更快。这是因为+操作符只需要在原始字符串上进行一次操作,而push_back函数需要在字符串末尾开辟一个新的空间。如果你有大量的字符串需要处理,使用+操作符可能会更有效率。

      总的来说,如果只是简单地在字符串的末尾添加字符或字符数组,那么使用push_back函数可能更简单和高效。然而,如果你需要将两个字符串连接在一起,那么使用+操作符可能更有效率。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部