算法题目---替换空格

来源:互联网 发布:网站自己屏蔽广告js 编辑:程序博客网 时间:2024/06/07 06:55

请实现一个函数,把字符串中的每个空格替换成"%02",例如输入"We are happy.",则输出" We%20are%20happy."


using namespace std;


void ReplaceBlank(char string[],int length)
{
        if(string == NULL || length <= 0)
        {
                return ;
        }
        int originalLength = 0;
        int numberOfBlank = 0;
        int i = 0;
        while(string[i] != '\0')
        {
                ++originalLength;
                if(string[i] == ' ')
                        ++ numberOfBlank;
                ++i;
        }

        int newLength = originalLength + numberOfBlank * 2;
        if(newLength > length)
                return;

        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;
        }
}

void test()
{
        char string [20] = "w d";
        printf("%s\n",string);
        ReplaceBlank(string,20);
        printf("%s\n",string);

}