剑指offer|替换空格

来源:互联网 发布:网络授课教师招聘 编辑:程序博客网 时间:2024/04/29 12:04

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

先遍历一遍字符串,统计空格打个数和字符串打长度。
然后计算新的字符串的长度。
一个指针指向原始字符串末尾,一个指针指向替换后字符串末尾。从后往前进行遍历替换。当剩下的空字符个数为0的时候停止遍历。

void replaceSpace(char *str, int length){    if(str == nullptr || length <= 2)        return;    int countSpace=0;    int originLength=0;    int i=0;    while(str[i] != '\0')    {        if(str[i] == ' ')            ++countSpace;        ++i;        ++originLength;    }    cout<<countSpace<<" \t"<<originLength<<endl;    int afterLength=originLength+2*countSpace;    while(countSpace>0)    {        if(str[originLength] ==' ')        {            str[afterLength--]='0';            str[afterLength--]='2';            str[afterLength--]='%';            --originLength;            --countSpace;        }        else        {            str[afterLength--]=str[originLength--];        }    }}
0 0
原创粉丝点击