Loading

02替换空格-剑指offer

剑指offer

题目描述

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

C++解

class Solution {
public:
void replaceSpace(char *str,int length) {
        //遍历一边字符串找出空格的数量
        if(str==NULL||length<0)
            return ;
        int oldnumber=0;//记录以前的长度
        int spacenumber=0;//记录空格的数量
        while(str[oldnumber]!='\0')
            {
               if(str[oldnumber]==' ')
                   {
                     spacenumber++;
                   }
                oldnumber++;
            }
        int newlength=oldnumber+spacenumber*2;//插入后的长度
        if(newlength>length)//如果计算后的长度大于总长度就无法插入
            return ;
        while(oldnumber>=0) //倒着放字符
            {
              if(str[oldnumber]==' ') //碰到空格就替换
                  {
                     str[newlength--]='0';
                     str[newlength--]='2';
                     str[newlength--]='%';
                     
                  }
               else //不是空格就把oldnumber指向的字符装入newlength指向的位置
               {
                    str[newlength--]=str[oldnumber];
                   
               }
             oldnumber--; //不管是if还是else都要把oldnumber前移
           }
        

}
};

Python解

To be filed.
posted @ 2019-12-19 17:25  pgCai  阅读(91)  评论(0)    收藏  举报