【剑指Offer第二题】替换空格
admin
2023-02-14 19:40:02
0

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

*注:设给定字符串长度为n。语言:C++


解法1:正向遍历,遇到空格即进行替换,并将其后的元素相应后移。

void replaceSpace(char *str,int length) {
        if(length <= 0)
            return;
        char rep[] = "%20";
        char *out;
        int cnt = 0;
        for(int i = 0; i < length; ++i)
        {
            if(str[i] == ' ')
            {
                for(int j = length+1; j > i; --j)
                    str[j] = str[j-2];
                length += 2;
                strncpy(str+i, rep, 3);
            }
        }
    }

时间复杂度:O(n^2),空间复杂度:O(1)


解法2:正向遍历计算空格数,再反向遍历进行空格替换。

void replaceSpace(char *str,int length) {
        if(length <= 0)
            return;
        int cnt = 0;
        for(int i = 0; i < length; ++i)
        {
            if(str[i] == ' ')
                cnt += 2;
        }
        for(int i = length - 1; i >= 0; --i)
        {
            if(str[i] != ' ')
                str[i + cnt] = str[i];
            else
            {
                cnt -= 2;
                str[i + cnt] = '%';
                str[i + cnt + 1] = '2';
                str[i + cnt + 2] = '0';
            }
        }
    }

时间复杂度:O(n),空间复杂度:O(1)

相关内容

热门资讯

今日重大发现“乐乐安徽麻将怎么... 有 亲,根据资深记者爆料乐乐安徽麻将是可以开挂的,确实有挂(咨询软件无需...
今日重大通报“呼伦贝尔麻将到底... 网上科普关于“呼伦贝尔麻将有没有挂”话题很是火热,小编也是针对呼伦贝尔麻将作*弊开挂的方法以及开挂对...
重磅消息“普通扑克三公大吃小开... 您好:普通扑克三公大吃小这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9752949】很多玩家...
玩家最新攻略“快乐竞技有没有挂... 玩家最新攻略“快乐竞技有没有挂?”(外卦神器下载)您好,快乐竞技这个游戏其实有挂的,确实是有挂的,需...
终于了解“哥哥斗地主怎么装挂?... 终于了解“哥哥斗地主怎么装挂?”(透视曝光猫腻)您好,哥哥斗地主这个游戏其实有挂的,确实是有挂的,需...
玩家分享攻略“新毛豆牛牛开挂神... 您好:新毛豆牛牛这款游戏可以开挂,确实是有挂的,需要了解加客服微信【9784099】很多玩家在这款游...
玩家最新攻略“酷玩联盟怎么开挂... 有 亲,根据资深记者爆料酷玩联盟是可以开挂的,确实有挂(咨询软件无需打开...
最新引进“今日花牌可以开挂吗?... 有 亲,根据资深记者爆料今日花牌是可以开挂的,确实有挂(咨询软件无需打开...
【第一财经】“乐禧棋牌开挂神器... 有 亲,根据资深记者爆料乐禧棋牌是可以开挂的,确实有挂(咨询软件无需打开...
终于懂了“一起温州游戏开挂器?... 有 亲,根据资深记者爆料一起温州游戏是可以开挂的,确实有挂(咨询软件无需...