【剑指offer02替换空格】

题目描述

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 
思路:
一个空格替换成‘%’+‘20’,也就是一个字符位替换为两个字符位,所以先统计空格数,计算替换完成后的字符串总长度为多少。
然后从后往前复制,遇到空格就复制02%
class Solution {
public:
    void replaceSpace(char *str,int length) {
        if(str==NULL||length<0)
            return ;
        int orignallength = 0; // 原始长度
        int countofbalnk = 0; //多少个空格
        for(int i=0;str[i]!='';i++){
            orignallength++;
            if(str[i]==' ')
                countofbalnk++;
        }
        //插入后的长度  每个空格的地方 1->2
        int newlength=orignallength+countofbalnk*2;

        //因为要比原来的长  所以从后往前插入对应字符
        //    保证原始的字符还有
        while(orignallength>=0)
        {
            if(str[orignallength]==' ')
            {//每添加一个  就得减一
                str[newlength--]='0';
                str[newlength--]='2';
                str[newlength--]='%';
            }
            else
            {//复制
                str[newlength]=str[orignallength];
                newlength--;
            }
            orignallength--;
        }
         
    }
};
原文地址:https://www.cnblogs.com/Stephen-Jixing/p/13123938.html