工作生活

5.替换空格

2019-06-30  本文已影响0人  HamletSunS

思路:
为了避免插入操作,可以考虑从后往前去替换空格。
可以通过先计算空格数目确定新数组的长度,这样设置两个指针i,j(或索引)去进行原地操作,遇空格就替换i-1,j-3,别的就直接复制,当i与j相等时停止操作

class Solution {
public:
    void replaceSpace(char *str,int length) {
        int old_n=0,new_n=0;
        int i=0,blank=0;
        while(str[i]!='\0'){
            old_n++;
            if(str[i]==' ')
                blank++;
            i++;
        }
        new_n=old_n+2*blank;
        if(new_n>length)
            return;
        while(old_n>=0 && new_n>old_n){
            if(str[old_n]==' '){
                str[new_n--]='0';
                str[new_n--]='2';
                str[new_n--]='%';
            }
            else
                str[new_n--]=str[old_n];
            old_n--;
        }
    }
};
上一篇 下一篇

猜你喜欢

热点阅读