zoukankan      html  css  js  c++  java
  • 【05】空格替换

    PRE

    给了两种,一个参数为char(较难),一个参数为string,用内置函数就行。

    题目

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

    思路

    由于这题给的参数是char指针,不能直接使用string的replace方法,但是参考他人题解,发现了一个比较巧妙的双指针,不额外创建字符串的方法。

    收获

    双指针,指针1指向原串末尾,指针2只想原串扩充之后的末尾,然后共同递减,当指针1==指针2的时候,说明替换成功了,因为只有不存在空格的情况下,双指针才能重叠。

    代码

    class Solution {
    public:
    	void replaceSpace(char *str,int length) {
            if(str==NULL) return ;
            int CountOfSpace = 0;
            int OriginSize = 0;
            for(int i = 0;str[i]!='';i++){
                OriginSize++;
                if(str[i]==' ') 
                    CountOfSpace++;
            }
            int len = OriginSize+2*CountOfSpace;
            if(len+1>length) return ;
            char *pstr1 = str+OriginSize;//结束符
            char *pstr2 = str+len;
            while(pstr2>pstr1){
                if(*pstr1==' '){
                    *pstr2-- = '0';
                    *pstr2-- = '2';
                    *pstr2-- = '%';
                }
                else *pstr2--=*pstr1;
                pstr1--;
            }
    	}
    };
    

    string

    class Solution {
    public:
        string replaceSpace(string s) {
            int pos = s.find(" ");
            while(pos<s.size()){          
                s.replace(pos,1,"%20");
                pos = s.find(" ");
            }
            return s;
        }
    };
    
    个人小站:http://jun10ng.work/ 拥抱变化,时刻斗争,走出舒适圈。
  • 相关阅读:
    C++概念性总结
    友元函数
    C++指针概念
    Linux下多线程(clone()线程)
    Qt5模块化详细总结
    C++有符号与无符号之间的转换问题
    使用C++test工具做Qt代码静态分析
    QT函数带有外部链接但没有在头文件中声明(QT noreturn属性添加)
    Linux之Docker手动创建Docker容器
    我在思考一个很变态的社会趋向
  • 原文地址:https://www.cnblogs.com/Jun10ng/p/12342714.html
Copyright © 2011-2022 走看看