替换空格

题目描述

请实现一个函数,将一个字符串中的空格替换成“%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--;
        }
    }
};
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章