题解 | #左旋转字符串#
左旋转字符串
https://www.nowcoder.com/practice/12d959b108cb42b1ab72cef4d36af5ec
//这题比较简单的做法是用额外的空间来做。但用原地空间进行操作才更有挑战。
//同样,只要把需要左移的部分字符串,和不需要左移的部分字符串,分别反转后,再反转整个字符串,即可完成。
class Solution {
public:
void reversestr(string &str,int begin,int end) {
int j = 0;
for (int i = begin; i < (begin+end)/2; i++) {
swap(str[i], str[end - j - 1]);
j++;
}
}
string LeftRotateString(string str, int n) {
if(str.empty())return str;
if(str.size()<n)//如果左移的位数比str的size大
{
n=n%str.size();
}
reversestr(str,0, n);
reversestr(str,n, str.size());
reversestr(str,0, str.size());
return str;
}
};
上海得物信息集团有限公司公司福利 1166人发布