LeetCode 541 反转字符串II

LeetCode 541 反转字符串II_第1张图片


知识点

双指针反转字符串/直接利用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。
	}

你可能感兴趣的:(leetcode,算法,c语言)