【面试算法系列】替换字符串中的空格为其他字符 - C语言实现

来源:互联网 发布:奥杜邦的祈祷 知乎 编辑:程序博客网 时间:2024/05/22 06:48

将一个字符串中的 空格 替换为 ‘%20’ ,

思路:第一遍遍历时候统计出空格个数n,一个空格一个字符,替换为%20之后,字符串所占的空间增加了空格个数的3倍即空间增加了2n,再从最后一个字符开始,向后移动2n,每当遇到一个空格,则插入%20,再往前找字符串往后移动2n-- ……依次找到第一个字符。代码如下:


#include <stdio.h>#include <stdlib.h>void ChangeBlank(char* a) {  //将字符串中的空格替换为‘%20’    int i = 0;    int sumString = 0;//字符串总长度    int blankString = 0;//字符串中空格的数量    while (a[i] != '\0') {        ++sumString;        if (a[i] == ' ') {            ++blankString;        }        i++;    }    //            printf("%d[%d]\n", sumString, blankString);    int newLength = sumString + blankString * 2; //空格被替换后字符串的总长度    char s[newLength];    while (i >= 0) {        if (a[i] != ' ') {            s[newLength--] = a[i];        }        if (a[i] == ' ') {            s[newLength--] = '0';            s[newLength--] = '2';            s[newLength--] = '%';        }        i--;    }    i = 0;    while (s[i] != '\0') {        printf("%c", s[i]);        i++;    }}int main() {             char *a = "we  are    human!";            ChangeBlank(a);//输出结果为:we%20%20are%20%20%20%20human! }



0 0
原创粉丝点击