题目:
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
题解思路:
方法一:求余法
1.新建一个string srt="";然后利用求余法遍历字符串,在添加字符串到str中。
函数代码:
class Solution {
public:
string reverseLeftWords(string s, int n) {
string str="";
int len=s.size();
for(int i=0;i<len;i++)
{
str+=s[(i+n)%len];
}
return str;
}
};
方法二:局部翻转法+整体翻转
1.先翻转s.begin()到n之间得字符串,就变成ba;
2.在翻转s.begin()+n到s.end()的字符串,就变成gfedc;
3.在整体翻转,s,begin()到s.end(),就变成cdefgab;
两次局部翻转+一次整体翻转
class Solution {
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;
}
};