首页 > 代码库 > 4、替换空格。将空格换成其他字符。
4、替换空格。将空格换成其他字符。
思路:若在同一个字符串移动,先遍历出空格个数,开辟空间,再从后往前遍历和复制。若允许新的空间,可随意。
solution1:
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str == null || str.length() == 0){
return str.toString();
}
StringBuffer str1 = new StringBuffer();
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == ‘ ‘){
str1.append("%20");
} else {
str1.append(str.charAt(i));
}
}
return str1.toString();
}
}
solution2:
public class Solution {
public String replaceSpace(StringBuffer str) {
if(str == null || str.length() == 0){
return str.toString();
}
int oldlen = str.length();
int blank = 0;
for(int i = 0; i < str.length(); i++){
if(str.charAt(i) == ‘ ‘){
blank++;
}
}
int len = str.length() + blank * 2;
//从后往前遍历str
str.setLength(len);
int index = len - 1;
for(int j = oldlen - 1; j >= 0 && index > j; j--){
if(str.charAt(j) == ‘ ‘){
str.setCharAt(index--, ‘0‘);
str.setCharAt(index--, ‘2‘);
str.setCharAt(index--, ‘%‘);
} else {
str.setCharAt(index--,str.charAt(j));
}
}
return str.toString();
}
}
solution3:
public class Solution {
public String replaceSpace(StringBuffer str) {
return str.toString().replaceAll("\\s", "%20");
}
}
测试用例:
字符串有空格(最前面,最后面,字符串中间,有连续多个字符)
没有空格
输入null,空,只有连续多个空格
4、替换空格。将空格换成其他字符。