zoukankan      html  css  js  c++  java
  • 【剑指offer】替换空格

    题目描述

    请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     
    题目不难,就是自己做的不好。
    脑子不清晰,也忘了考虑边界条件。
     
    好的思路:
    由于空格变成%20多出了两位,所以最后字符串一定变长了。
    先统计有多少的空格,length - 1 + 2 * 空格数 就是替换后最后一个字符的位置,从后向前依次赋值即可。
    void replaceSpace(char *str,int length) {
            int n1 = 0;
            int nb = 0;
            for (int i=0; str[i]!=''; i++){
                n1++;
                if (str[i] == ' ')
                    nb++;
            }
            int newn1 = n1 + 2 * nb;
            str[newn1] = '';
            int i,j;
            for (i=n1-1,j=newn1-1; i>=0 && nb>0; i--){
                if (str[i] == ' '){
                    str[j--] = '0';
                    str[j--] = '2';
                    str[j--] = '%';
                    nb--;
                }
                else{
                    str[j--] = str[i];
                }
            }
     
        }

    我的超挫代码

    void replaceSpace(char *str,int length) {
            char * ss = new char[3 * length];
            int i = 0,j = 0;
            while(i < length)
            {
                if(str[i] == ' ')
                {
                    i++;
                    ss[j++] = '%';
                    ss[j++] = '2';
                    ss[j++] = '0';
                }
                else
                {
                    ss[j++] = str[i++];
                }
            }
            ss[j] = '';
            while(j >= 0)
            {
                str[j] = ss[j];
                j--;
            }
            delete ss;
        }
  • 相关阅读:
    MySQL(数据库)
    移动端兼容
    Vue常用指令
    JS浮点运算精度问题
    ES11新增的9个新特性
    后端要采用ArrayBuffer上传文件
    重磅来袭 Vue 3.0 One Piece 正式发布
    Vue 事件的高级使用方法
    浏览器的回流与重绘(Reflow&Repaint)
    微前端介绍
  • 原文地址:https://www.cnblogs.com/dplearning/p/4674070.html
Copyright © 2011-2022 走看看