替换空格

 1 package algorithms;
 2 
 3 /**
 4  *     请实现一个函数,将一个字符串中的每个空格替换成“%20”。 
 5  *     例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
 6  * 
 7  */
 8 //先统计出字符串中空格的数量  确定出新串的长度(原串长度+空格数量*2)
 9 //举一反三:合并两个数组时,如果从前往后复制每个数字则需要重复移动数字多次,
10 //那么我们可以考虑从后往前复制,这样就能减少移动的次数,从而提高效率
11 public class ReplaceSpace {
12     public String replaceSpace(StringBuffer str) {
13         if (str.length() == 0)
14             return "";
15         char[] oldStr = str.toString().toCharArray();
16         // 统计出字符串中空格的数量
17         int count = 0;
18         for (int i = 0, len = oldStr.length; i < len; i++) {
19             if (oldStr[i] == ' ')
20                 count++;
21         }
22         char[] newStr = new char[oldStr.length + count * 2];
23         int j = 0;
24         for (int i = 0, len = oldStr.length; i < len; i++) {
25             if (oldStr[i] == ' ') {
26                 newStr[j] = '%';
27                 newStr[++j] = '2';
28                 newStr[++j] = '0';
29             } else {
30                 newStr[j] = oldStr[i];
31             }
32             j++;
33         }
34         String s = new String(newStr);
35         return s;
36     }
37 }
38 
39 
40 /*    看题目要求是否一定要在原字符串上进行操作
41  * 
42  * public String replaceSpace(StringBuffer str) {
43     if(str==null){
44         return null;
45     }
46    StringBuilder newStr = new StringBuilder();
47     for(int i=0;i<str.length();i++){
48         if(str.charAt(i)==' '){
49             newStr.append('%');
50             newStr.append('2');
51             newStr.append('0');
52         }else{
53             newStr.append(str.charAt(i));
54         }
55     }
56     return newStr.toString();
57 }*/
原文地址:https://www.cnblogs.com/ustc-anmin/p/10630426.html