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

    题目:请实现一个函数,把字符串中的每个空格替换成“%20”。例如输入“We are happy.”,则输出“We%20are%20happy.”。

    解题思路:以时间效率优先的话,可以分为两种处理办法,一种利用辅助内存,即新开辟一个数组,时间复杂度为O(n)

    另一种不用辅助内存,即在原数组上操作:

    1.先遍历一次数组,统计空白字符个数,记录在blankcount中,数组的最后一位‘’的下标记录在index中;

    2.求得替换空格后的数组最后一位下标lastindex=index+2*blankcount;

    3.从后往前遍历数组,替换数组中的空格。

    实现代码如下:

    #include<iostream>
    #include<string>
    using namespace std;
    void replace(char *array,int length)
    {
        if(array!=NULL&&length>0)//判断参数是否合法
        {
            int blankcount=0,index=0;//blankcount记录空格数,index记录数组中最后一为''的下标
            while(array[index]!='')//统计空格数
            {
                if(array[index]==' ')
                    blankcount++;
                index++;
            }
            //置换空格之后实际数组最后一位的下标
            int lastindex=index+2*blankcount;
            //判断数组容量是否合格
            if(lastindex>length)
            {
                cout<<"数组长度不够!"<<endl;
                return;
            }
            //循环将空格替换为“%20”
            while(index<lastindex&&index>=0)
            {
                if(array[index]==' ')
                {
                    array[lastindex--]='0';
                    array[lastindex--]='2';
                    array[lastindex--]='%';
                    index--;
                }
                else
                {
                    array[lastindex--]=array[index--];
                }
            }
        }
    }
    int main()
    {
        char a[100]={' ','a','b',' ',' ','c','d',' ','e','f',' '};//测试用例
        cout<<a<<endl;
        replace(a,100);
        cout<<a<<endl;
        char *b="asdasd";
        cout<<b<<endl;
        replace(b,20);
        cout<<b<<endl;
        char c[20]={' ',' '};
        cout<<c<<endl;
        replace(c,20);
        cout<<c<<endl;
        char name[20];return 0;
    }

    结果:

  • 相关阅读:
    实验四 (1):定义一个形状类(Shape)方法:计算周长,计算面积
    计算机结构的简化模型
    memcached性能测试之Twemperf
    Eclipse UML小工具AmaterasUML的配置和使用
    Kafka中文官方文档
    HBase Snapshot简介
    shell脚本学习系列之一---入门
    linux中shell变量$#,$@,$0,$1,$2的含义解释
    vim常用操作
    Linux多台主机间配置SSH免密登陆
  • 原文地址:https://www.cnblogs.com/runninglzw/p/4477568.html
Copyright © 2011-2022 走看看