58剑指OFFER之左旋转字符串

参考资料:

[1]参考剑指OFFER书上的思想

关键词:

这个情况要考虑一下。

string a;
if(n>str.size())//这种极情况返回空的字符串
     return a;
思路:

先全部首尾对调,再分别各自对调

自己的解答:
class Solution {
public:
    string LeftRotateString(string str, int n) {
        
        if(str.empty())
            return str;
         string a;
        if(n>str.size())//这种极情况返回空的字符串
            return a;
        //步骤1:首尾全部对调
        Reverse(str,0,str.length()-1);
        //步骤2:部分自己首尾对调
        Reverse(str,0,str.length()-1-n);
        Reverse(str,str.length()-n,str.length()-1);
        return str;
    }
    
    void Reverse(string &str,int begin,int end)
    {
        while(begin
标准答案:
class Solution {
public:
    string LeftRotateString(string str, int n) {
        
        //思想很重要:受翻转单词顺序的启发
        //首先翻转前n个,在翻转后面的,然后进行全部翻转
        string a;
        if(n>str.size())//这种极情况返回空的字符串
            return a;
        Reverse(str,0,n-1);
        Reverse(str,n,str.size()-1);
        Reverse(str,0,str.size()-1);
        return str;
    }
    
    void Reverse(string &str,int begin,int end)
    {
        while(begin

你可能感兴趣的:(58剑指OFFER之左旋转字符串)