替换空格

来源:互联网 发布:pdf笔记软件 编辑:程序博客网 时间:2024/04/29 22:53
题目描述:

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

输入:

每个输入文件仅包含一组测试样例。
对于每组测试案例,输入一行代表要处理的字符串。

输出:

对应每个测试案例,出经过处理后的字符串。


第一种解法:不是空格直接输出,是空格输出%20.

#include<cstdio>#include<cstring>#include<cstdlib> char str[100000001];int main(){    while(gets(str))    {        int len = strlen(str);        for(int i = 0; i < len; i++)        {            if(str[i] != ' ')                printf("%c",str[i]);            else            {                printf("%%20");            }         }        printf("\n");        memset(str,0,sizeof(str));    }    return 0;}

第二种解法:将原来的字符串替换。先遍历一次字符串,统计字符串空格数,并算出替换后的字符串总长度。然后从后面开始复制和替换。时间复杂度为O(n)。

#include<cstdio>#include<cstring>#include<cstdlib>char str[10000001];void ReplaceBlank(char string[]){    //originalLength为字符串string的实际长度    int originalLength = 0;    int numberOfBlank = 0;    int i = 0;    while(string[i] != '\0')    {        ++originalLength;        if(string[i] == ' ')            ++numberOfBlank;        ++i;    }    int newLength = originalLength + numberOfBlank * 2;    int indexOfOriginal = originalLength;    int indexOfNew = newLength;    while(indexOfOriginal >= 0 && indexOfNew > indexOfOriginal)    {        if(string[indexOfOriginal] == ' ')        {            string[indexOfNew--] = '0';            string[indexOfNew--] = '2';            string[indexOfNew--] = '%';        }        else        {            string[indexOfNew--] = string[indexOfOriginal];        }        --indexOfOriginal;    }}int main(){    while(gets(str))    {        ReplaceBlank(str);        printf("%s\n",str);    }    return 0;}


0 0
原创粉丝点击