![## 思路](https://img-blog.csdnimg.cn/6c78cd59236545ae89606cfe430a531f.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAYmFqMDAx,size_20,color_FFFFFF,t_70,g_se,x_16)
原题链接
- 在Java语言中,字符串都被设计成「不可变」的类型,即无法直接修改字符串的某一位字符,需要新建一个字符串实现 使用StringBuilder
- StringBuffer是线程安全的,而StringBuilder则没有实现线程安全功能,所以性能略高
- 首先是由toCharArray() 将字符串转换为字符数组
- 使用增强for循环来实现将 s 依此赋给 c
- 如果c是空格,在res后面append %20 若不是append c
- 最后返回要使用toString()
- 二刷:关于 ’ ’ " " 的关系:单引号内是char类型的字符,双引号内是string类型,即单引号内只能存放一个字符,而双引号内可以存放多个字符。故在此处,当检测到 空格 ’ ’ 的时候,要替换成 %20 但是 %20是多个字符,所以用" "包裹。
class Solution {
public String replaceSpace(String s) {
StringBuilder res = new StringBuilder();
for(char c : s.toCharArray()){
if(c == ' '){
res.append("%20");
}else{
res.append(c);
}
}
return res.toString();
}
}