《剑指Offer》替换空格

来源:互联网 发布:手腕细 手表 知乎 编辑:程序博客网 时间:2024/06/06 16:42

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

思路:
首先改函数形参,改为引用传入

 void replaceSpace(char *&str,int length) 

space记录空格数,new一个length+2*space+1的指针数组,再循环str,如果str[j]不是空格,就直接赋值,k++;如果是空格,则将%、2、0赋值给s,同时k+=3。

代码实现:

class Solution {public:    void replaceSpace(char *&str,int length) {        int space=0;        for (int i = 0; i < length; i++){//循环记录空格的数量             if (str[i] == ' '){                space++;            }        }        char *s = new char[length + space * 2+1];//new新空间,用来存替换空格后的字符串        int k=0;        for (int j = 0; j < length; ++j){            if (str[j] != ' '){//如果str[j]不是空格,就直接赋值,k++                *(s+k) = str[j];                k++;            }            if (str[j] == ' '){//如果是空格,则将%、2、0赋值给s,同时k+=3                *(s+k) = '%';                *(s+k + 1) = '2';                *(s+k + 2) = '0';                k += 3;            }        }        *(s + k + 1) = '\0';//C语言风格字符串末尾要是'\0'        str = s;//将str指向s    }};

结果是:运行时间: <1 ms 占用内存:9536K 状态:答案正确

0 0
原创粉丝点击