题目
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy."
输出:"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
解题思路
前置知识
StringBuilder
StringBuilder是Java中的一个可变字符串类,它属于java.lang包。与String类不同,StringBuilder对象的值可以修改,而不会创建新的对象。这使得StringBuilder在需要频繁修改字符串内容的场景下更加高效。
StringBuilder类提供了一系列方法来操作字符串,例如追加、插入、删除、替换等。它的主要特点包括:
1. 可变性:StringBuilder对象的值可以修改,不会创建新的对象。这使得在修改字符串时,不需要频繁地创建新的字符串对象,从而提高了性能。
2. 高效性:StringBuilder类使用了可变的字符数组来存储字符串内容,这使得对字符串的操作更加高效。相比之下,String类中的字符串是不可变的,每次对字符串进行修改时都会创建一个新的字符串对象,导致额外的内存开销。
3. 线程不安全:StringBuilder类是非线程安全的,不适合在多线程环境下使用。如果需要在多线程环境中使用可变字符串,可以使用线程安全的StringBuffer类。
使用StringBuilder类可以方便地进行字符串的拼接、修改和处理,特别适用于需要频繁修改字符串内容的情况,例如循环拼接字符串、动态生成字符串等。
找到了StringBuilder后,我们一起来看一下这道题
1.题目要求我们把字符串 s 中的每个空格替换成"%20"。因为在java中的String类中的字符串是不可变的,我们需要创建一个新的字符串对象,所以我们先创建一个 StringBuilder 类型的builder,然后用 for()循环遍历原字符串。
2.当遍历到空格时,我们就将“%20”加入bulider中,其余的字符直接加入即可,最后我们将builder转换为字符串输出即可。
代码实现
class Solution {
public String replaceSpace(String s) {
StringBuilder bulider = new StringBuilder();
for(int i = 0; i < s.length(); i++){
if(s.charAt(i) == ' '){
bulider.append("%20");
}else{
bulider.append(s.charAt(i));
}
}
return bulider.toString();
}
}
测试结果