Leetcode-每日一题【剑指 Offer 05. 替换空格】

题目 

请实现一个函数,把字符串 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();
    }
}

测试结果

Leetcode-每日一题【剑指 Offer 05. 替换空格】_第1张图片Leetcode-每日一题【剑指 Offer 05. 替换空格】_第2张图片

 

你可能感兴趣的:(算法每日一题,leetcode,算法,职场和发展,java)