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

    面试题5:替换空格

    方法:首先遍历字符串,统计空格的个数,然后扩容字符串,使用两个指针,一个指向原字符串末尾,另一个指向扩容后的字符串末尾,依次向前移动指针,遇到字符就将前面指针的字符复制到后面的指针,遇到空格则依次替换为%20,时间复杂度为O(n)。

    完整代码:

    // length为字符串string的总容量
    void ReplaceBlank(char string[], int length) 
    {
        if(string == nullptr || length <= 0)
            return;
        
        // originalLength为字符串string的实际长度
        int originalLength = 0; 
        int numberOfBlank = 0;
        int i = 0;
        
        //统计空格数 
        while(string[i] != '')
        {
            ++originalLength;
            
            if(string[i] = ' ')
                ++numberOfBlank;
            
            ++i;
        }
        
        //newLength为把空格替换为%20后的字符串长度
        int newLength =  originalLength + numberOfBlank * 2;
        if(newLength > length)
            return;
        
        //定义两个指针
        int indexOfOriginal = originalLength;
        int indexOfNew = newLength;
        
        while(indexOfOriginal > 0 && indexOfNew > indexOfOriginal)
        {
            if(string[indexOfOriginal] == '')
            {
                string[indexOfNew--] = '0';
                string[indexOfNew--] = '2';
                string[indexOfNew--] = '%';
            }
            else
                string[indexOfNew--] = string[indexOfOriginal];
            
            indexOfOriginal--;
        }
    } 
  • 相关阅读:
    python的Collections 模块
    python模块
    python类
    python异常
    python文件处理
    python函数
    python字符串
    python数据结构
    python循环
    下载Google Play外国区APP技巧
  • 原文地址:https://www.cnblogs.com/ZhangWj-/p/12953764.html
Copyright © 2011-2022 走看看