题解 | #左旋转字符串#
左旋转字符串
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; } };