具体步骤为:
- 反转区间为前n的子串
- 反转区间为n到末尾的子串
- 反转整个字符串
最后就可以达到左旋n的目的,而不用定义新的字符串,完全在本串上操作。
char* reverse(char* s, int start, int end) {
while (start < end) {
char temp = s[start];
s[start++] = s[end];
s[end--] = temp;
}
return s;
}
char* reverseLeftWords(char* s, int n){
int len = strlen(s);
//反转前 n 个字符
s = reverse(s, 0, n - 1);
//反转 k 到末尾的字符
s = reverse(s, n, len - 1);
//反转整个字符串
s = reverse(s, 0, len - 1);
return s;
}