【剑指offer】替换空格

在这里插入图片描述

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

目录

  • 一、题目描述
    • 1、题目
    • 2、示例
  • 二、题目分析
    • 1、`replaceAll` 方法
    • 2、`StringBuilder`
    • 3、临时数组


一、题目描述

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;
    }

你可能感兴趣的:(#,剑指offer,java,剑指offer)