替换空格

来源:互联网 发布:域名重新定向 编辑:程序博客网 时间:2024/05/23 19:42

剑指offer(2)

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
时间复杂度为O(n)的算法
class Solution {public:void replaceSpace(char *str,int length) {         if(length<=0)             return;        int Oldlen=0;        int Nonlen=0;        int Totallen=0;        for(int i=0;str[i]!='\0';i++)         {               //原来总长度            Oldlen++;            //length++;            //空格总长度            if(str[i]==' ')                Nonlen++;                      }        //替换后的长度        Totallen=Oldlen+2*Nonlen;        if(Totallen<Oldlen)            return;        //从原始数组尾部开始查找,并从尾部开始替换        int j=Totallen;        while(Oldlen>=0&&Totallen>Oldlen)            {               if(str[Oldlen]==' ')                {                      str[j--]='0';                    str[j--]='2';                    str[j--]='%';                                   }               else               {                      str[j--]=str[Oldlen];                   }             --Oldlen;            }              }    };


0 0