• 替换空格


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

     

    1. 时间复杂度为O(n)的算法。

    首先,遍历原字符数组,得到空格的个数,乘以2就是新字符数组比原字符数组增加的字符空间。

    然后,初始化新字符数组,定义两个指针,p1指向原字符数组的末尾,p2指向新字符数组的末尾。

    最后,从后往前移动p1,根据p1指向的元素,给p2指向的位置赋值,同时移动p2。

     1 public class Main {
     2 
     3     public static void main(String[] args) {
     4 
     5         String string = "We are happy.";
     6 
     7         Main main = new Main();
     8 
     9         System.out.println(main.process(string));
    10 
    11     }
    12 
    13     public String process(String string) {
    14 
    15         if (null == string) {
    16             return null;
    17         }
    18 
    19         char[] chars = string.toCharArray();
    20 
    21         // 计算空格个数
    22         int count = 0;
    23         for (int i = 0; i < chars.length; i++) {
    24             if (' ' == chars[i]) {
    25                 count++;
    26             }
    27         }
    28 
    29         char[] charsConv = new char[chars.length + 2 * count];
    30 
    31         int p2 = charsConv.length - 1;
    32         int p1 = chars.length - 1;
    33 
    34         while (p1 >= 0) {
    35 
    36             if (' ' == chars[p1]) {
    37                 charsConv[p2] = '0';
    38                 charsConv[--p2] = '2';
    39                 charsConv[--p2] = '%';
    40             } else {
    41                 charsConv[p2] = chars[p1];
    42             }
    43 
    44             p2--;
    45             p1--;
    46         }
    47 
    48         return String.valueOf(charsConv);
    49 
    50     }
    51 }
  • 相关阅读:
    shell的格式化输出命令printf
    shell数组
    shell字符串
    shell注释
    shell运算符
    shell替换
    shell特殊变量
    shell变量
    linux修改主机名
    ssh免密码登录设置
  • 原文地址:https://www.cnblogs.com/jiangyi-uestc/p/7955210.html
Copyright © 2020-2023  润新知