剑指Offer 05. 替换空格(java解题)

offer,替换,空格,java,解题 · 浏览次数 : 38

小编点评

**题目2** 输入:s = \"We are happy.\" 输出:\"We%20are%20happy.\" **解题思路(通用逐个字符遍历String字符串,并设置一个结果字符串变量re。如果遍历到的字符不是空格,就把字符存入结果变量;如果遍历到的字符是空格,则将%20存入结果变量;由于结果字符串re需要增加字符,而String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了,因此re不能定义为string类型,如果需要对字符串做很多修改,那么应该选择使用 StringBuffer 或 StringBuilder 类。** **java代码1** ```java class Solution { public String replaceSpace(String s) { StringBuilder re=new StringBuilder(); for(int i=0;i<s.length();i++){ if(s.charAt(i)==' '){ re.append('%'); re.append('2'); re.append('0'); } else{ re.append(s.charAt(i)); } } return re.toString(); } } ```

正文

1. 题目

请实现一个函数,把字符串 s 中的每个空格替换成%20

示例 1:

输入:s = "We are happy."   
输出:"We%20are%20happy."

限制:
0 <= s 的长度 <= 10000

2. 解题思路(通用

逐个字符遍历String字符串,并设置一个结果字符串变量re。

如果遍历到的字符不是空格,就把字符存入结果变量;
如果遍历到的字符是空格,则将%20存入结果变量;

由于结果字符串re需要增加字符,而String类型有一个特点:

  • String类是不可改变的,所以你一旦创建了String对象,那它的值就无法改变了,因此re不能定义为string类型,

如果需要对字符串做很多修改,那么应该选择使用 StringBuffer 或 StringBuilder 类。

这是java的一个知识点,具体请看String、StringBuffer、StringBuilder 的区别?

3. 数据类型功能函数总结

//String
String.length();//获得字符串长度
String.charAt(index);//获得字符串中下标index的字符
//StringBuffer
StringBuffer 变量名=new StringBuffer();//声明一个StringBuffer类型的变量
StringBuffer.append(ch);//在尾部添加字符
StringBuffer.toString();//将StringBuffer转为String类型

4. java代码

class Solution {
    public String replaceSpace(String s) {
        StringBuilder re=new StringBuilder();
        for(int i=0;i<s.length();i++){
            if(s.charAt(i)==' '){
                re.append('%');
                re.append('2');
                re.append('0');
            }
            else{
                re.append(s.charAt(i));
            }
        }
        return re.toString();
    }
}

与剑指Offer 05. 替换空格(java解题)相似的内容:

剑指Offer 05. 替换空格(java解题)

leetcode中《图解数据结构》的刷题记录,包含解题思路、java代码的知识点小结和遇到的一些错误类型,与君共勉。

剑指 Offer 32 - I. 从上到下打印二叉树(java解题)

leetcode《图解数据结构》剑指 Offer 32 - I. 从上到下打印二叉树的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 32 - II. 从上到下打印二叉树 II(java解题)

leetcode《图解数据结构》剑指 Offer 32 - II. 从上到下打印二叉树II 的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 32 - III. 从上到下打印二叉树 III(java解题)

leetcode《图解数据结构》剑指 Offer 32 - III. 从上到下打印二叉树 III(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 34. 二叉树中和为某一值的路径(java解题)

leetcode《图解数据结构》剑指 Offer 34. 二叉树中和为某一值的路径(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 55 - I. 二叉树的深度(java解题)

leetcode《图解数据结构》剑指 Offer 55 - I. 二叉树的深度(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 55 - II. 平衡二叉树(java解题)

leetcode《图解数据结构》剑指 Offer 55 - II. 平衡二叉树(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 64. 求 1 + 2 + … + n(java解题)

leetcode《图解数据结构》剑指 Offer 64. 求 1 + 2 + … + n(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(java解题)

leetcode《图解数据结构》剑指 Offer 68 - I. 二叉搜索树的最近公共祖先(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。

剑指 Offer 68 - II. 二叉树的最近公共祖先(java解题)

leetcode《图解数据结构》剑指 Offer 68 - II. 二叉树的最近公共祖先(java解题)的解题思路和java代码,并附上java中常用数据结构的功能函数。