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;
        }
    };
  • 相关阅读:
    [编程] 正则表达式
    [游戏] PhysX物理引擎(编程入门)
    [PHP] visitFile()遍历指定文件夹
    [D3D] 用PerfHUD来调试商业游戏
    [C,C++] 妙用0元素数组实现大小可变结构体
    [D3D] DirectX SDK 2006学习笔记1——框架
    [JS] 图片浏览器(兼容IE,火狐)
    [C#(WinForm)] 窗体间传值方法
    [ASP.NET] 提示错误:The server has encountered an error while loading an application during the processing your request
    [JS] 火狐得到文件的绝对路径(暂时的方法)
  • 原文地址:https://www.cnblogs.com/dingxiaoqiang/p/7427057.html
Copyright © 2011-2022 走看看