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;
        }
  • 相关阅读:
    JavaScript获取数组索引
    jQuery实现购物车效果
    JavaScript随机验证码
    javascript头像上传
    JavaScript中null和undefined的区别
    cookie、sessionStorage和localStorage区别
    Cookie封装
    封装好的Ajax
    通过反射实现javaweb项目中权限的刷新
    java中反射的理解
  • 原文地址:https://www.cnblogs.com/dplearning/p/4674070.html
Copyright © 2011-2022 走看看