这道题用string简单了很多,而用c语言就涉及strcat和strcpy的运用。
第一种思路:循环移位n次,每次把第一个移到最后,O(n2).
第二种思路(最简):两个串拼接,取新串第n位开始数length个字符作为结果。
第三种思路:三次反转。
string LeftRotateString(string str, int n) {
int len = str.size();
if (len == 0 || n > len) {
return str;
}
str += str;
int j = n;
int i = 0;
for (i= 0; i < len; i++) {
str[i] = str[j++];
}
str[i] = 0;
return str;
}