题目

题解

三个方法,都比较简单,直接看代码吧

1. 切片拼接法

  • 时间复杂度$O(n)$
  • 空间复杂度$O(n)$
class Solution {//三个方法。1.切片拼接
public:
    string reverseLeftWords(string s, int n) {
        return s.substr(n) + s.substr(0,n);
    }
};

2. 遍历拼接法

  • 时间复杂度$O(n)$
  • 空间复杂度$O(n)$
class Solution {//三个方法。2.遍历拼接
public:
    string reverseLeftWords(string s, int n) {
        string res;
        for(int i=n; i<s.size(); ++i){
            res += s[i];
        }
        for(int i=0; i<n; ++i){
            res += s[i];
        }
        return res;
    }
};

3. 三次旋转法

  • 时间复杂度$O(n)$
  • 空间复杂度$O(n)$
class Solution {//三个方法。3.三次旋转
public:
    string reverseLeftWords(string s, int n) {
        reverse(s.begin(), s.begin() + n);
        reverse(s.begin() + n, s.end());
        reverse(s.begin(), s.end());
        return s;
    }
};