题目1510:替换空格

合并两个数组(包括字符串)时,如果从前往后复制每个数字(或字符)需要重复移动数字(或字符)多次,那么我们可以考虑从后往前复制,这样就能减少移动的次数,从而提高效率。

题目1510:替换空格_第1张图片


代码:

#include<stdio.h>
#include<string.h>
char str[10000001];
int main()
{   
    int i,j,len;
    while(gets(str))
    {
        int count = 0;
        len = strlen(str);
        //统计空格的个数
        for(i = 0;i < len;i++)
        {
            if(str[i] == ' ')
            {
                count++;
            }
        }
        //原始字符串末尾
        i = len;
        //替换之后字符串末尾
        j = 2*count+len;
        //i == j 表示空格替换完毕
        while(i != j && i >= 0)
        {
            if(str[i] == ' ')
            {
                str[j--] = '0';
                str[j--] = '2';
                str[j--] = '%';
                i--;
            }
            else
            {
                str[j] = str[i];
                j--;
                i--;
            }
        }
        //输出替换之后的字符串
        len = strlen(str);
        for(i = 0;i < len;i++)
        {
            printf("%c",str[i]);
        }
        printf("\n");
    }
    return 0;
}
/**************************************************************
    Problem: 1510
    User: 小qixuan
    Language: C
    Result: Accepted
    Time:50 ms
    Memory:10680 kb
****************************************************************/


你可能感兴趣的:(字符串遍历)