《剑指Offer》学习笔记——替换空格

来源:互联网 发布:美妆凯文老师的淘宝店 编辑:程序博客网 时间:2024/06/06 00:33

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


class Solution {public:void replaceSpace(char *str,int length) {//思路就是计算出替换后的字符串的长度,利用两个指针,                                             //一个指向就字符串的末尾,一个指向新字符串的末尾                                             // 进而从后向前面遍历,这样子节约时间,移位的效率高,                                             //因为没有做多余的移位操作;        if(str==NULL||length<=0)            return;        int originalLength=0;        int newLength=0;        int blankNum=0;        int i=0;        while(str[i]!='\0')//如果用*str计算字符串长度,程序运行结果不正确,为什么??        {            originalLength++;            if(str[i]==' ')                blankNum++;            i++;        }                newLength=originalLength+2*blankNum;        if(newLength>length)            return;                int indexOriginal=originalLength;        int indexNew=newLength;        while(indexOriginal>=0&&indexNew>indexOriginal)        {            if(str[indexOriginal]==' ')            {                str[indexNew--]='0';                str[indexNew--]='2';                str[indexNew--]='%';            }            else                str[indexNew--]=str[indexOriginal];            indexOriginal--;        }}};


0 0
原创粉丝点击