剑指offer(2)—替换空格

来源:互联网 发布:linux nginx 域名绑定 编辑:程序博客网 时间:2024/06/06 12:42

替换空格

题目描述

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

思路

先统计空格的个数count,对数组进行长度扩展,用两个指针p1p2p1指向原字符串的最后一个元素length1p2指向扩展后的字符串的最后一个元素length+2count1,同时向前移动,若p1指向空格,则对p2进行替换

代码

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