
本题难点主要是char和String类型转换不太熟练,由于 ‘ ’ 需要转成 ‘%20’ 扩充了三倍,因此假设一个char数组为原字符串的三倍长,用size为索引标记最后一位的位置,最后返回新字符串String,以size为字符串长度。
法一:
class Solution {
public String replaceSpace(String s) {
char[] res = new char[3*s.length()];
int size = 0;
for (int i = 0; i < s.length(); i ++) {
char c = s.charAt(i);
if (c == ' ') {
res[size++] = '%';
res[size++] = '2';
res[size++] = '0';
}else {
res[size++] = c;
}
}
String newString = new String(res, 0 ,size);
return newString;
}
}
法二:利用StringBuilder可以在字符串中直接加上'%20',最后再把StringBuilder转为String返回
class Solution {
public String replaceSpace(String s) {
StringBuilder res = new StringBuilder();
for(Character c : s.toCharArray())
{
if(c == ' ') res.append("%20");
else res.append(c);
}
return res.toString();
}
}
本文介绍了解决《剑指Offer》中第05题“替换空格”的两种方法。方法一通过创建一个初始长度为原字符串三倍的字符数组实现空格替换;方法二则使用StringBuilder简化替换过程。
1831

被折叠的 条评论
为什么被折叠?



