[剑指offer]替换空格(CC++描述)

请实现一个函数,将一个字符串中的每个空格替换成%20例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy
  • 遍历一次给定字符串str,确定原字符串长度oldlength,计算空格出现的次数count,计算替换后新字符串的长度
  • p1指向原字符串末尾,p2指向新字符串末尾
  • p1指向的字符不为' '则将str[p1]赋给str[p2]
  • 否则 将' '替换为%20p1--,p2--
class Solution {
public:
	void replaceSpace(char *str,int length) 
    {
        if(str == NULL || length == 0)
            return;
        int oldlength = 0, count = 0, i=0;
        while(str[i]!='\0')
        {
            if(str[i]==' ')
                ++count;
            ++i;
            ++oldlength;
        }
        int p1 = oldlength, p2 = oldlength + count*2;    //p1指向字符串结束处  p2指向替换后的字符串结束处
        if(p2  length)	//若所需空间大于给定空间则返回 
            return;
        while(p1  p2  p1 = 0)	//当p1 p2不相等时 替换
        {
            if(str[p1]==' ')
            {
                str[p2--] = '0';
                str[p2--] = '2';
                str[p2--] = '%'; 
            }
            else
                str[p2--] = str[p1];
            p1--;
        }
    }
};
最新回复(0)
/jishu_2FnIwMqMqPUEYlBBjEviQXNIjEcdTuk7KoD_2F7eYNmbzE_3D4795353
8 简首页