剑指offer-0x04

来源:互联网 发布:校园网络使用代理软件 编辑:程序博客网 时间:2024/05/22 12:32

题目描述
解题思路

#include <iostream>using namespace std;void ReplaceBlank(char str[], int length){    if(str == NULL || length<=0)        return;    int originalLength = 0;    int numofBlank = 0;    int i = 0;    //计算原字符串的长度,并统计空格个数    while(str[i]!= '\0')    {        originalLength ++;        if(str[i] == ' ')            numofBlank ++;        i++;    }    //每替换一个空格,长度增加2    int newlength = originalLength + numofBlank * 2;    if(newlength>length)        return;    int indexofOriginal = originalLength;    int indexofNew = newlength;    while(indexofOriginal>=0 && indexofNew>indexofOriginal)    {        if(str[indexofOriginal]==' ')        {            str[indexofNew--]='0';            str[indexofNew--]='2';            str[indexofNew--]='%';        }        else            str[indexofNew--]=str[indexofOriginal];        indexofOriginal--;    }}int main(){    char str[]="hello world hello c++";    ReplaceBlank(str,100);    cout << "result is  "<< str<<endl;    return 0;}
1 0