剑指 Offer 05. 替换空格

Posted 程序字母K

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指 Offer 05. 替换空格相关的知识,希望对你有一定的参考价值。

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

这个题需要注意的是在string里面把一个字符换成三个字符,需要调整size的大小;
1.在原有参数上改的话,需要对size进行增容,判断‘ ’个数进行增容;

string replaceSpace(string s) {
        int count_e=0,len=s.size();
        for(auto e:s){
            if(e==' ')
            count_e++;
        }
        s.resize(len+2*count_e);
        for(int i=len-1,j=s.size()-1;i>=0;i--,j--){
            if(s[i]==' '){
            s[j]='0';
            s[j-1]='2';
            s[j-2]='%';
            j-=2;
            }
            else 
            s[j]=s[i];
        }
        return s;

2.新建一个string 的话,将原来参数的值插入,不用管增容,只要碰到‘ ’时插入“%20”即可;

string replaceSpace(string s) {
	std::string s_copy;
    for(auto e:s){
        if(e==' '){
        	s_copy.push_back('%');
            s_copy.push_back('2');
            s_copy.push_back('0');
        }else 
            s_copy.push_back(e);
        }
return s_copy;

以上是关于剑指 Offer 05. 替换空格的主要内容,如果未能解决你的问题,请参考以下文章

剑指OFFER----面试题05.替换空格

LeetCode(剑指 Offer)- 05. 替换空格

Leetcode剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

剑指 Offer 05. 替换空格

剑指 Offer(第 2 版)刷题 | 05. 替换空格