5.替换空格

作者: HamletSunS | 来源:发表于2019-06-30 17:59 被阅读0次

    思路:
    为了避免插入操作,可以考虑从后往前去替换空格。
    可以通过先计算空格数目确定新数组的长度,这样设置两个指针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--;
            }
        }
    };
    

    相关文章

      网友评论

        本文标题:5.替换空格

        本文链接:https://www.haomeiwen.com/subject/dlibcctx.html