替换空格

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


若只考虑输出替换后的字符串,则只需定义一个新字符串,当原字符串不为空格,push_back该字符,当原字符串为空格,push_back“%20”即可.

class Replacement {
public:
    string replaceSpace(string iniString, int length) {
        // write code here
        string str;
        for(int i=0;i<length;i++)
        {
            if(iniString[i]==' ')
            {
                str.push_back('%');
                str.push_back('2');
                str.push_back('0');
            }
            else
                str.push_back(iniString[i]);
        }
        return str;
    }
};

若要在原字符串上进行操作的话,就稍微复杂点,需要先统计空格数,确定替换空格后字符串的大小。然后从尾部开始插入,遇到非空字符,直接插入;遇到空格,依次插入‘0’,‘2’,‘%’;

class Solution {
public:
	void replaceSpace(char *str,int length) {
        if(str==NULL||length<0) return ;
        int oldl=0,spa=0;
        int i=0;
        while(str[i]!='\0')
        {
            oldl++;
            if(str[i]==' ')
                spa++;                    //记录空格
            i++;
        }
        int newl=oldl+2*spa;
        if(newl>length) return ;
        while(newl>=oldl&&oldl>=0)
        {
            if(str[oldl]==' ')                    //尾插
            {
                str[newl--]='0';
                str[newl--]='2';
                str[newl--]='%';
                    
            }
            else
                str[newl--]=str[oldl];
            oldl--;
        }
	}
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值