• 替换空格 --剑指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--];
                }
            }
        }
    };
  • 相关阅读:
    广搜 BFS()
    最短路-A
    DFS-C
    codeforces contest
    小技巧
    将博客搬至CSDN
    建树
    codeforces gym102411 Equidistant(图论+乱搞)
    codeforces 1250N wires(简单图论)
    Splay 树
  • 原文地址:https://www.cnblogs.com/nlw-blog/p/12409009.html
Copyright © 2020-2023  润新知