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

    替换空格

    题目描述

    请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
     
    思路:知识盲点==char类型的指针char* str,结尾的都是'',string结尾的也可能是'';char是内置类型,作为一个指针的时候不能指向string这种有class的对象。
            string str{ "string" };
        char word;
        vector<char> vec{ 'n','i' };
        char * test = &vec[0];    
        vec[0] = '0';
        cout << vec[0];
        for each(word in str) {
            cout << word;
        }

    vector<char>里面只能初始化为'a' 这样的,不要初始化为“”“”,后面的这种事字符串。vector类型的使用指针的时候,要指向第一个元素的地址。string末尾没有''。

    字符串数组可以直接进行修改,vec[0 = '0',但是如果是char* p = "string",这种就不能对内容进行修改,因为字符串string是一个常量,规定不能对常量进行修改,要修改必须先转化为数组才能进行修改。

    使用字符串常量对字符数组进行初始化的时候,系统会自动在末尾加上字符串结尾符号'',但是定义的字符数组必须要有足够的长度。比如char p[] = "new",那么数组的长度要加上结束符号,就是len = 4;

    这道题目一定要画图。

    注意点1:统计空格长度的时候要复制一个指针,那个接口的length是指string的最大能开辟的长度。

    注意点2:两个指针复制时,结束的条件是p1 == p2。

    char *s;如果s == null,那么是不能对s进行*操作的。

    class Solution {
    public:
        void replaceSpace(char *str,int length) {
            if(str == NULL || length <= 0){
                return;
            }
            int num = 0,oldLen = 0;
            char *tmp = str;
            while(*tmp != ''){
                if(*tmp == ' '){
                    ++num;
                }
                ++tmp;
                ++oldLen;
            }
            int newLen = oldLen + 2 * num;
            if(newLen > length){
                return;
            }
            char* pFront = str + oldLen;
            char* pLast = pFront + 2 * num;
            while(pFront != pLast){
                if(*pFront == ' '){
                    *(pLast--) = '0';
                    *(pLast--) = '2';
                    *(pLast--) = '%';
                }
                else{
                     *(pLast--) = *pFront;   
                }
                --pFront;
            }
            return;
        }
    };
  • 相关阅读:
    查看Linux系统版本信息
    ensemble github强大的下载安装功能--ensembl-git-tools
    Linux系统非root用户安装perl模块
    Linux下安装与使用本地的perl模块
    MATLAB 2014a (8.3) Compiler Runtime (MCR)
    GEO--工具 ScanGEO
    vcf2maf
    RNAseq 流程
    pathway一些网站
    abbitMQ整合Spring Booot【点对点模式】
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7427057.html
Copyright © 2011-2022 走看看