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

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

    思路:从后向前替换,时间复杂度为O(n),且没有额外开辟新的数组存放替换空格后的字符串

       1.先遍历计算字符串中空格数量n,替换后字符串长度:原先字符串长度 + 2*n

       2.从后向前遍历字符串,若为空则替换

    注意:如果从前向后替换字符串,那么保存在空格后面的字符串肯定会被覆盖。假设字符串的长度为n。对每个空格字符,需要移动后面O(n)个字符,因此对含有O(n)个空格字符的字符串而言总的时间复杂度为O(n2),不可取。

    void replaceSpace(char *str,int length) {
        int i;
        int num = 0;
        char *p = str;
        int sum = length;
        for(i = 0;i < length;i++)
        {
            if(*p == ' ')
                num++;
            p++;
        }
        sum += num*2;
    
        while(length >= 0)
        {
            if(str[length] != ' ')
            {
                str[sum--] = str[length];
            }
            else
            {
                str[sum--] = '0';
                str[sum--] = '2';
                str[sum--] = '%';
            }
            length--;
        }
    }
  • 相关阅读:
    es6作用域
    es6函数的扩展
    input输入框ios上光标与placeholder、value不能对齐居中
    移动端input常用样式
    webpack安装遇到的坑
    错误类型
    滚动超出一定高度后,导航栏吸顶
    表单change()事件
    第二周学习进度
    第一周学习进度
  • 原文地址:https://www.cnblogs.com/yapp/p/9039805.html
Copyright © 2011-2022 走看看