剑指offer之替换空格

来源:互联网 发布:mac中英文输入法切换 编辑:程序博客网 时间:2024/05/20 05:03

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

解决思路:刚开始没思路时,可以由简入繁

1、先来简单的,有了大体的思路

#include <stdio.h>#include <string.h> void replace(char *a){ char b[100]; int i=0,j=0; while(a[i] != '\0'){ if(a[i]==' '){ b[j++]='%'; b[j++]='2'; b[j++]='0'; i++; }else{ b[j++]=a[i++]; } } printf("%s\n", b); }int main(){char a[100] = "my name is hee";replace(a);}

2、再上述的基础上,再拓展

#include <stdio.h>#include <string.h>#include <stdlib.h>char *replace(char *a){ int i=0,j=0;int len = strlen(a);char *b;b = (char *)malloc(len+1);memset(b, 0, sizeof(b)); while(i<len){ if(a[i]==' '){ len = len +2; b=(char *)realloc(b, len); //每次遇到空格,增大2个空间  memcpy(b+j, "%20", 3); j=j+3; i++; }else{ b[j++]=a[i++]; } }b[j]='\0';return b;} int main(){char a[100];gets(a); //输入字符串 char *b = replace(a);printf("%s\n", b);free(b);b = NULL;}


0 0
原创粉丝点击