剑指Offer编程题2——替换空格

剑指Offer编程题2——替换空格

题目描述

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

题目解析:

从前向后扫描时,移动元素会出现覆盖的情况,因此选择从后往前扫描:

遇到空格时,将空格以后的字符串都向后移动两个位置,空格处放%,因此需要从最后一个元素开始移动,避免元素覆盖。

代码

class Solution {
public:
    void replaceSpace(char *str,int length) {
        int i=length-1;
        int j,count=0;
        while(i>=0)    //从后向前扫描字符串
        {
            if(str[i]==' ')
            {
                for(j=length-1;j>=i;j--)
                    str[j+2]=str[j];       //将字符串从空格到最后的移动两个位置
                str[i]='%';
                str[i+1]='2';
                str[i+2]='0';
                length+=2;
            }
            i--;
        }
    }
};

 

另一种解题:

可以先计算出有多少个空格,需要向后移动多少,这样可以减少每次都从最后一个移动

 

 

转载于:https://www.cnblogs.com/wyx501/p/10669479.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值