剑指Offer(牛客版)--面试题5:替换空格

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41923658/article/details/86485639

题目:请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入“We are happy.”,则输出“We%20are%20happy.”。

代码如下:

class Solution {
public:
	void replaceSpace(char *str,int length) {
          //检查字符串输入的合法性
          if(str==nullptr||length<=0)
              return ;
        //字符串的实际长度
        int originalLength=0;
        //空格的数量
        int numberofblank=0;
        //字符串的游标
        int i=0;
        //计算字符串的实际长度和空格数
        while(str[i]!='\0') //当字符不为结束字符时
        {
                ++originalLength;
            if(str[i]==' ')
                ++numberofblank;
            ++i;
        }
        
        //计算替换之后的字符串长度
        int newLength=originalLength+numberofblank*2;
        //当新串长度大于字符数组的总容量,则不能复制
        if(newLength>length)
            return ;
        /*********替换空格***************/
        int indexoforiginal=originalLength;
        int indexofnew=newLength;
        while(indexoforiginal>=0&&indexofnew>indexoforiginal)
        {
            if(str[indexoforiginal]==' ')
            {
                str[indexofnew--]='0';
                str[indexofnew--]='2';
                str[indexofnew--]='%';
            }      
            else
            {
                str[indexofnew--]=str[indexoforiginal];
            }
            --indexoforiginal;
        }   
	}
};

扫码关注微信公众号,欢迎技术交流,其中含有大量免费的人工智能、图像处理、IT资料:

猜你喜欢

转载自blog.csdn.net/weixin_41923658/article/details/86485639