题目:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
知识点:
字符串
思路:
String是immutable类。StringBuffer是mutable的,可以修改字符串的长度 setLength(int length); 、字符串指定位置的字符 setCharAt(int position, char replace)
本题要求将字符串中的字符,替换成字符串。
方法一,返回新String。可以创建一个新的StringBuffer对象,初始化为空,然后用Append方法截取原字符串从非空格到空格。
方法二,再原来String做修改。
1. 从前往后遍历字符串,得到空格的数量。更新字符串的长度(扩容)。
2. 从后往前替换字符串的话,每个字符串只需要移动一次;
方法三,Java String类方法。
Str.toString().replace('', "%20")
代码:
public class Solution {
public String replaceSpace(StringBuffer str) {
//count the number of space from beginning to the end
int numSpace = 0;
for(int i = 0; i < str.length(); i++) {
if(str.charAt(i) == ' ') {
numSpace++;
}
}
int oldStrLen = str.length();
int updatePointer = str.length() + numSpace*2 - 1;
str.setLength(str.length() + numSpace*2);
// iterate from the end to beginning
// i--,不要手抖写成i++
for (int i = oldStrLen - 1; i >= 0; i--) {
if(str.charAt(i) == ' '){
str.setCharAt(updatePointer--, '0');
str.setCharAt(updatePointer--, '2');
str.setCharAt(updatePointer--, '%');
} else {
str.setCharAt(updatePointer--, str.charAt(i));
}
}
// 转换成字符串返回
return str.toString();
}
}
来源:https://www.cnblogs.com/zyrJessie/p/12556778.html