剑指offer——替换空格

来源:互联网 发布:知乎查看自己的匿名 编辑:程序博客网 时间:2024/05/18 00:34

1. 题目分析

  题目描述:请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
  题目分析:先计算string的长度和字符串中空格的字数,然后计算出替换过空格的字符串的长度。然后分别两个指针,一个指向原串的串尾,一个指向新串的串尾,从后置前依次将字符串复制到新的位置并替换空格。

2. 题目解答——cpp

class Solution {public:    void replaceSpace(char *str,int length) {        int spaceNum=0;        for(int i=0;i<length;i++)        {            if(str[i]==' ')                spaceNum++;        }             int newIndex=length+2*spaceNum;        char *index=str+length;        while(index>=str)        {            if(*index==' ')            {                str[newIndex--]='0';                str[newIndex--]='2';                str[newIndex--]='%';            }            else{                str[newIndex--]=*index;            }            index--;        }    }};