【剑指offer】题42:翻转单词顺序VS左旋转字符串

来源:互联网 发布:软件评测师真题在线 编辑:程序博客网 时间:2024/06/03 11:47

void Reverse_Word(string& str, int left, int right){    while (left<right)    {        using std::swap;        swap(str[left++], str[right--]);    }}string ReverseSentence(string str){    if (str.size()==0)    {        return str;    }    int left(0), right(0);    while (left<str.size())    {        if (str[left]==' ')        {            left++;            right++;        }else if (str[right]==' '||right==str.size())        {            Reverse_Word(str, left, right-1);            left = right;        }        else        {            right++;        }    }    Reverse_Word(str, 0, str.size() - 1);    return str;}int main(){    string str("a stdudent id  ");    auto tmp = ReverseSentence(str);#ifdef debug_#else#endif    return 0;}

void reverse(string& str, int left, int right){    while (left<right)    {        using std::swap;        swap(str[left++], str[right--]);    }}string LeftRotateString(string str, int n){    if (str.size()==0||n<=1)    {        return str;    }    n = n%str.size();    reverse(str, 0, n - 1);    reverse(str, n, str.size()-1);    reverse(str, 0, str.size() - 1);    return str;}int main(){    string str("a stdudent id  ");    auto tmp = LeftRotateString(str, 3);#ifdef debug_#else#endifreturn 0;}

阅读全文
0 0
原创粉丝点击