【剑指offer】替换空格

发布时间:2024年01月16日

在这里插入图片描述

  • 👑专栏内容:力扣刷题
  • ?个人主页:子夜的星的主页
  • 💕座右铭:前路未远,步履不停


一、题目描述

1、题目

剑指offer:替换空格

请实现一个函数,将一个字符串s中的每个空格替换成“%20”。
例如,当字符串为We Are Happy则经过替换之后的字符串为We%20Are%20Happy。

数据范围: 0 ≤ l e n ( s ) ≤ 1000 0≤len(s)≤1000 0len(s)1000
保证字符串中的字符为大写英文字母、小写英文字母和空格中的一种。

2、示例

示例1
输入:“We Are Happy”
返回值:“We%20Are%20Happy”

示例2
输入:" "
返回值:“%20”

二、题目分析

1、replaceAll 方法

在 Java 中,replaceAll 方法是 String 类的一个成员方法,用于替换字符串中满足指定正则表达式的所有子串。它返回一个新的字符串,其内容是通过替换原字符串中匹配给定正则表达式的所有子串得到的。

public class Solution {
    public String replaceSpace (String s) {
        return s.replaceAll(" ","%20");
    }
}

2、StringBuilder

StringBuilder 类是一个可变的字符序列。与 String 类不同,StringBuilder 允许你在不生成新对象的情况下更改字符串内容,Java字符串:构建和操作字符序列的动态工具

StringBuilder中的append方法:将指定数据添加到序列的末尾。

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

3、临时数组

新建一个临时数组,逐个遍历字符串中的每个字符,如果不是空格就把遍历的字符添加到临时数组中,如果是空格就添加3个字符'%''2''0'加到临时数组中。

    public String replaceSpace(String s) {
        int length = s.length();
        char[] array = new char[length * 3];
        int index = 0;
        for (int i = 0; i < length; i++) {
            char c = s.charAt(i);
            if (c == ' ') {
                array[index++] = '%';
                array[index++] = '2';
                array[index++] = '0';
            } else {
                array[index++] = c;
            }
        }
        String newString = new String(array, 0, index);
        return newString;
    }
文章来源:https://blog.csdn.net/weixin_61084441/article/details/135586407
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。