您的位置:首页 > 编程语言 > C语言/C++

541. Reverse String II(C语言版本)

2017-07-17 14:15 369 查看
Given a string and an integer k, you need to reverse the first k characters for every 2k characters counting from the start of the string. If there
are less than k characters left, reverse all of them. If there are less than 2k but greater than or equal to k characters, then reverse the first k characters and left the other as original.

利用递归,实现该问题

void swap_char(char* a,char* b){
char c = *a;
*a = *b;
*b = c;
}
inline void swap_str(char* s,int k){
for (char *i=s,*j=s+k-1;i<j;i++,j--){
swap_char(i,j);
}
}
void reverseStr_len(char* s, int k,int str_len) {
if(str_len<=1){
return;
}else if(str_len < k){
k = str_len;
}
swap_str(s,k);
reverseStr_len(s+2*k,k,str_len-2*k);
}
char* reverseStr(char* s, int k) {
int str_len = strlen(s);
//printf("str_len:%d\r\n",str_len);
reverseStr_len(s,k,str_len);
return s;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string