[Lc]面试题58_II左旋转字符串
Contents
题目
题解
三个方法,都比较简单,直接看代码吧
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;
}
};
Author ChrisHRZ
LastMod 2020-06-29