知识点
双指针反转字符串/直接利用return判断条件带回/多段函数的思想
C语言代码实现
//利用双指针反转字符串。
void swap(char* p1, char* p2);
void reverse(char* start, char* end);
int condition(int a, int b); //找到关系,规律。
char* reverseStr(char* s, int k) {
int n = strlen(s);
int i;
for (i = 0; i < n; i += 2 * k) {
reverse(&s[i], &s[condition(i + k, n)]);
}
return s;
}
void swap(char* p1, char* p2) {
char temp = *p1;
*p1 = *p2;
*p2 = temp;
}
void reverse(char* start, char* end) {
while (start < end) {
swap(start++, --end);
}
}
int condition(int a, int b) {
return a < b ? a : b; //直接把条件写进return。
}