• 替换空格 --剑指offer


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

    java直接用函数就可以解决 没有意义 所以用c++写。

    思路:这题如果允许开辟新的空间 也是比较简单的,但是如果不允许开辟新的空间,而且保证原有的字符串长度够,那么该怎么解决才是重点。

    设置两个i,j标志,计算出替换后的长度 ,i表示原先字符串最后的下标,j表示计算后字符串最后的下标,然后从后往前走就完了。

    class Solution {
    public:
        void replaceSpace(char *str,int length) {
            if(str == nullptr || length <= 0){
                return;
                                       }
            int space_count=0;
    //计算空格的数量,方便计算替换后字符串的长度
            for(int i =0;i <length;i++){
                if(str[i] == ' '){
                    space_count ++;
                }
            }
            int nlength=2*space_count + length;
            int i = length-1;
            int j = nlength-1;;
            while(i >= 0){
                if(str[i] == ' '){
                    str[j--]='0';
                    str[j--]='2';
                    str[j--]='%';
                    i --;
                }else{
                    str[j--] = str[i--];
                }
            }
        }
    };
  • 相关阅读:
    2019-12-2 异常捕获
    类与类之间的6种关系
    关键字与理解
    this与super的语法比较
    单继承与多继承对比
    为什么javaBean要有get/set方法的设计
    多态在面向对象中的意义以及带来的好处
    十四、线程设计
    十三、窗口设计
    十二、SWING界面设计
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12409009.html
Copyright © 2020-2023  润新知