左旋转字符串

class Solution {
public:
    string LeftRotateString(string str, int n) {
        string res1;
        string res=str;
        //单独定义一个循环左移一个的函数,后面n是多少,转移多少
        int len=str.size();
        if(len==0)
            return res;
        for(int j=0;j<n;j++)
        {
            //转移一位的做法
            int i=0;
            res1=res[0];
            for(;i<len-1;i++)
            {
                res[i]=res[i+1];
            }
            res.resize(len-1);
            res=res+res1[0];
        }
        return res;
    }
};

总结:
1.string可以像数组一样操作,且,最后加不加\0,最新C++11规定需要有它结尾。
2.截取字符串,用resize()
大神解法:

class Solution {
public:
    string LeftRotateString(string str, int n) {
        int len = str.length();
        if(len == 0) return "";
        n = n % len;
        str += str;
        return str.substr(n, len);
    }
};

1.很巧妙的解法,以n=n%len,来替代了大量的我的循环运算,可还行
2.str.substr(pos, n) 返回一个字符串,包含str中从下标pos开始的n个字符,牛逼

全部评论

相关推荐

算法冲刺中:kpi面加一,面完完全没动静,感谢信都没有
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务