替换空格

来源:互联网 发布:android 调用js 编辑:程序博客网 时间:2024/05/21 11:32

题目描述

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

解题分析

替换字符串中的空格,一、我们可以重头开始往后遍历,遇到空格就用%20替换,考虑到这样的话需要移动的元素很多,每替换一个空格,他后面的所有元素都要移动,时间复杂度太高。二、从后往前替换空格,那么只需要移动空格后面的字符串就行了,这样大大减少时间复杂度。

//length为牛客系统规定字符串输出的最大长度,固定为一个常数class Solution {public:    void replaceSpace(char *str,int length) {        //spaceLength记录空格的个数        int spaceLength=0;        //OldLength记录字符串长度        int OldLength=0;        //开始遍历计数        int k=0;        while(str[k]!='\0'){            OldLength++;            if(str[k]==' '){                spaceLength++;            }            k++;        }        //替换后的字符串长度        int newLength=OldLength+spaceLength*2;        //与牛客系统给的长度值比较        if(newLength>length){return;}        //从后面开始替换        while(OldLength>=0&&newLength>OldLength){            if(str[OldLength]==' '){                str[newLength--]='0';                str[newLength--]='2';                str[newLength--]='%';            }            else{                str[newLength--]=str[OldLength];            }            OldLength--;        }    }};
0 0