剑指 Offer 05. 替换空格

209 阅读2分钟

Offer 驾到,掘友接招!我正在参与2022春招系列活动-刷题打卡任务,点击查看活动详情

一、题目描述

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

示例

示例1:

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

提示

  • 0 <= s 的长度 <= 10000

难度:简单

此题为简单题,兄弟们可以重拳出击,没错,就是你想到的那种方法,简单粗暴!

二、思路分析

众所周知,力扣上,简单题是真简单,中等题有些困难,困难题看不懂答案。

题目解析

  • 替换空格,题目简单明了,将字符串中的所有空格替换为 "%20",没有任何的隐藏难度,直接遍历字符串判断如果是空格字符,直接替换为 "%20" 。

解题思路

回字有四种写法,替换空格同样有多种解法,解题思路分别为:

  1. 使用 java 中内置字符串的 replace 替换方法,将字符串 " " 替换为 "%20".
  2. 遍历拼接字符的方法,定义 StringBuffer 字符串用于拼接结果字符串,遍历源字符串,如果碰到 ' ' 则替换为拼接 "%20",遍历完成后返回结果字符串。
  3. 使用数组组装结果字符串,同样是遍历源字符串,在遍历的过程中,如果碰到 ' ' 字符,则为数组中添加 '%' '2' '0' 三个字符,最终遍历完字符串后将数组转为字符串返回。

三、AC 代码

使用内置 replace 函数

public String replaceSpace(String s) {
    //直接使用内置方法替换
    return s.replace(" ", "%20");
}

image.png

使用字符串拼接

public String replaceSpace(String s) {
    // 遍历判断每个字符是否是空格
    StringBuffer str = new StringBuffer();
    for(int i = 0; i < s.length(); i++){
        if(s.charAt(i) == ' ') str.append("%20");
        else str.append(s.charAt(i)); 
    }
    return str.toString();
}

image.png

使用数组组装字符

public String replaceSpace(String s) {
    // 使用数组组装
    char[] arr = new char[s.length() * 3];
    int count = 0;
    for(int i = 0; i < s.length(); i++){
        if(s.charAt(i) == ' '){
            arr[count++] = '%';
            arr[count++] = '2';
            arr[count++] = '0';
        } 
        else arr[count++] = s.charAt(i); 
    }
    return new String(arr,0,count);
}

image.png

四、总结

知识点

字符串和数组相关操作

  • 字符串长度:s.length();
  • 数组长度:arr.length;
  • 数组转字符串:String str = new String(arr,0,arr.length);

最后

阳春三月,算法刷起来!LeetCode 剑指 Offer

简单题,不需要考虑太多,开干就是了。