剑指 Offer 58 - II. 左旋转字符串
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
解题思路一
先保存待旋转的部分,然后把不需旋转的部分复制到前端,再把待旋转部分复制到尾端。
代码
class Solution {
public:
string reverseLeftWords(string s, int n) {
string part=s.substr(0,n);
int len=s.size();
for(int i=0;i<len;i++){
if(i>=len-n){
s[i]=part[i-len+n];
}
else{
s[i]=s[i+n];
}
}
return s;
}
};
解题思路二
分成两半后颠倒位置拼接
代码
class Solution {
public:
string reverseLeftWords(string s, int n) {
string part=s.substr(0,n);
string part2=s.substr(n,s.size()-n);
s=part2+part;
return s;
}
};