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

    剑指offer替换空格:

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

    思路:当我们从前往后进行替换时,每替换一个就要移动后面的所有字符,时间复杂度是0(n2)

    我们可以从后向前替换,先统计出所有的空格数space_count,就能得到替换后的长度是length+2*space_count

    定义两个指针(可以用下标表示),i指向替换前的最后一个字符下标,j指向替换后的最后一个字符下标

    从后向前复制。

     1 //请实现一个函数,将一个字符串中的每个空格替换成“%20”。
     2 //例如,当字符串为We Are Happy.
     3 //则经过替换之后的字符串为We%20Are%20Happy。
     4 #include <iostream>
     5 #include <cstring>
     6 #include <cstdlib>
     7 using namespace std;
     8 
     9 
    10 class Solution {
    11 public:
    12     //思路首先找出统计所有的空格数,这样就能计算出替换后的字符串长度
    13     // 然后从后向前替换
    14     void replaceSpace(char *str, int length)
    15     {
    16         if(length <= 0 || str == nullptr)
    17             return ;
    18 
    19         int space_count  = 0;
    20         for(int i = 0; i < length; i++)
    21         {
    22             if (str[i] == ' ')
    23                 space_count++;
    24         }
    25 
    26         int i = length-1; //替换前最后一个字符下标
    27         int j = length+space_count*2-1; // 替换后最后一个字符的下标
    28         while(j >= 0)
    29         {
    30             if (str[i] == ' ')
    31             {
    32                 str[j--] = '0';
    33                 str[j--] = '2';
    34                 str[j--] = '%';
    35                 i--;
    36             }
    37             else
    38                 str[j--] = str[i--];
    39         }
    40     }
    41 };
    42 
    43 
    44 int main(void)
    45 {
    46     char str[] = "as df kls";
    47     // char str[] = "hello"和char *str = "hello"不一样
    48     Solution s;
    49     s.replaceSpace(str, strlen(str));
    50     return 0;
    51 }
  • 相关阅读:
    Java提高篇——通过分析 JDK 源代码研究 Hash 存储机制
    Java提高篇——equals()与hashCode()方法详解
    Java提高篇——equals()方法和“==”运算符
    Java提高篇—— 简单介绍Java 的内存泄漏
    Java提高篇——理解String 及 String.intern() 在实际中的应用
    hbuilder
    angular
    微信小程序
    angular
    angular
  • 原文地址:https://www.cnblogs.com/xiaokang01/p/12397215.html
Copyright © 2011-2022 走看看