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;
        }
  • 相关阅读:
    asp.net源码坊2015-3月第二周TOP10下载排行
    Asp.Net编程需要学习什么
    面试的同学看过来
    Asp.Net模板生成HTML页面
    毕业设计之房产中介系统源码
    HTML常用状态代码
    Asp.Net毕业设计论文
    网页常用Javascript
    intellij idea使用笔记
    bootstrap-table使用笔记
  • 原文地址:https://www.cnblogs.com/dplearning/p/4674070.html
Copyright © 2011-2022 走看看