剑指offer 4---替换空格

来源:互联网 发布:java用户登录实现代码 编辑:程序博客网 时间:2024/06/06 00:57

一.将一句话里的单词倒置  “student a am I” 改为 “I am a student”

void reverse_string(char* start, char* end){assert(start);assert(end);while (start < end){*start = *start^*end;*end = *start^*end;*start = *start^*end;++start;--end;}}void str_reverse(char* str){assert(str);int len = strlen(str);//首先整体逆置reverse_string(str, str + len - 1);//部分逆置while (*str != '\0'){char* p = str;while (*str != '\0' && *str != ' '){++str;}reverse_string( p, str - 1);++str;}}int main(){char str[] = "student a am i";str_reverse(str);printf("%s\n", str);system("pause");return 0;}


二.实现一个函数,将字符数组中每个空格替换为%20

//字符串替换空格void Replace(char* dest, const char* src){assert(dest);assert(src);while (*src){if (*src != ' ')      //如果不为空格,则原样输出{*dest = *src;   ++dest;}else{strcpy(dest, "%20");dest = dest + 3;}++src;   //源字符串每次只需要加1}*dest = '\0';}int main(){char dest[60];char src[] = "we are happy!";Replace(dest, src);printf("%s\n", dest);system("pause");return 0;}


原创粉丝点击