题目描述
请实现一个函数,把字符串中的每个空格替换成"%20"。例如输入"We are Happy.",则输出"We%20are%20Happy."。
题目解析
解法一
【分析】
在Java语言中字符串是不可变的,所以说不能直接修改字符串中的字符,需要新创建字符串来实现。
1、初始化一个stringBuilder变量result用于存储替换后的字符串
2、遍历字符串中的每个字符,如果字符为空直接替换为“%20”,如果字符不为空直接追加到新字符串之后
3、将result转换成字符串返回即可
【代码实现】
public String replaceSpace(StringBuilder sb) {
if (sb == null) {
return null;
}
StringBuilder result = new StringBuilder();
for (char c : sb.toString().toCharArray()) {
if (c == ' ') {
// 如果是空格就追加替换后的字符
result.append("%20");
} else {
// 不是空格就直接追加
result.append(c);
}
}
return result.toString();
}
【复杂性分析】
- 时间复杂度:遍历一次字符串,所以说是O(n)。
- 空间复杂度:创建了StringBuilder对象使用线性大小的空间,所以说O(n)。
解法二
【分析】
利用String的方法实现,这种方法工作中可以使用,但是面试时不可取
【代码实现】
public String replaceSpace2(StringBuilder sb) {
return sb.toString().replace(" ", "%20");
}