替换空格

【题目】请实现一个函数,将一个字符串中的空格替换成“%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 }
原文地址:https://www.cnblogs.com/jiangyi-uestc/p/7955210.html