zoukankan      html  css  js  c++  java
  • 剑指offer 面试题5:替换空格

    题目描述

    请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy. 则经过替换之后的字符串为We%20Are%20Happy。

    编程思想

    首先求出字符串空格的个数,然后新字符串的长度 = 旧字符串的长度 + 2 * 空格的个数,最后从后往前遍历复制即可。

    编程实现

    class Solution {
    public:
        //length为字符数组的总容量
        void replaceSpace(char *str,int length) {
            if(str == nullptr || length <= 0)
                return;
            int originalLen = 0;
            int blankLen = 0;
            int i = 0;
            while(str[i] != '')
            {
                ++originalLen;
                if(str[i] == ' ')
                    ++blankLen;
                ++i;
            }
            int newLen = originalLen + blankLen * 2;
            if(newLen > length)
                return;
            while(originalLen >= 0 && newLen > originalLen)
            {
                if(str[originalLen] == ' ')
                {
                    str[newLen--] = '0';
                    str[newLen--] = '2';
                    str[newLen--] = '%';
                }
                else
                {
                    str[newLen--] = str[originalLen];
                }
                --originalLen;
            }
        }
    };

    题目总结

    时间和空间复杂度都为O(n)。

  • 相关阅读:
    List接口的实现类
    Java 容器概述
    PayPal支付接口方式(checkout)集成
    Java Bio、Nio、Aio区别
    Java Aio
    Java Nio
    Java Bio
    Java Io流
    Java 23种设计模式
    SQL检测超时工具类
  • 原文地址:https://www.cnblogs.com/parzulpan/p/11256853.html
Copyright © 2011-2022 走看看