剑指offer刷题心得——左旋转字符串

不知道怎么滴,总感觉自己想得过于复杂,看看别人做的,是真的简洁,向他人学习!

我的代码:

class Solution {
public:
    string LeftRotateString(string str, int n) 
    {
        char * des=(char*)malloc(sizeof(char)*n); //申请内存空间
        strncpy(des,str.c_str(),n);  //拷贝前n个字符
        string r=str+des;     //把原字符与拷贝的字符拼接起来
        string res;    //定义一个空的字符串
        for(int i=n;i<r.size();i++)
        {
            res.push_back(r[i]); //往这个空串里放旋转之后的字符串
        }
        return res; //返回旋转之后的字符串
    }
};

别人的:

class Solution {
public:
    string LeftRotateString(string str, int n) {
        string s = "";          //定义一个空字符串s
        s = str.substr(0,n);    //s为str从0到n的子串
        str.erase(0,n);         //擦除str中从0到n的字符
        str = str + s;          //将擦除字符的str与s进行拼接
        return str;             //返回str
    }
};

猜你喜欢

转载自blog.csdn.net/xenian_xerus/article/details/87922855