欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

替换空格( replace方法、字符数组、StringBuilder)

程序员文章站 2022-03-26 21:06:57
替换空格题目描述:请实现一个函数,把字符串 s 中的每个空格替换成"%20"。示例 1:输入:s = "We are happy."输出:"We%20are%20happy."限制:0 <= s 的长度 <= 10000解题思路:这道题其实不难,运用java来做有很多种方法,无非就是把字符串 s 中的每个空格替换成"%20"而已。方法一(java replace方法):这个方法极其简单!replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldC...

替换空格

题目描述:

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

示例 1:

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

限制:

0 <= s 的长度 <= 10000


解题思路:

这道题其实不难,运用java来做有很多种方法,无非就是把字符串 s 中的每个空格替换成"%20"而已。

方法一(java replace方法):

这个方法极其简单!

replace() 方法通过用 newChar 字符替换字符串中出现的所有 oldChar 字符,并返回替换后的新字符串。

语法

public String replace(char oldChar,
                      char newChar)

参数

  • oldChar – 原字符。
  • newChar – 新字符。

返回值

替换后生成的新字符串。

代码:

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

方法二(字符数组):

首先,创建字符数组 array,其长度为 s.length() * 3,初始化 size0size 表示替换后的字符串的长度;

接着遍历字符串 s,获得 s 的当前字符 c,判断如果字符 c 是空格,则令 array[size] = '%',array[size + 1] = '2',array[size + 2] = '0',并将 size 的值加 3,如果字符 c 不是空格,则令 array[size] = c,并将 size 的值加 1;

最后,遍历结束之后,size 的值等于替换后的字符串的长度,从 array 的前 size 个字符创建新字符串,并返回新字符串。

复杂性分析

  • 时间复杂度:O(n)。遍历字符串 s 一遍。
  • 空间复杂度:O(n)。额外创建字符数组,长度为 s 的长度的 3 倍。

代码:

class Solution {
    public String replaceSpace(String s) {
        char[] array = new char[s.length() * 3];
        int size = 0;
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c == ' ') {
                array[size] = '%';
                array[size+1] = '2';
                array[size+2] = '0';
                size+=3;
            } else {
                array[size] = c;
                size++;
            }
        }
        String newStr = new String(array, 0, size);
        return newStr;
    }
}

方法三(StringBuilder):

**首先,**初始化一个 StringBuilder ,记为 res

**然后,**遍历列表 s 中的每个字符s.charAt(i)
s.charAt(i)为空格时:向 res 后添加字符串 “%20”;
s.charAt(i)不为空格时:向 res 后添加字符s.charAt(i)
**最后,**将列表 res 转化为字符串并返回。

复杂度分析:
时间复杂度 O(N): 遍历使用 O(N),每轮添加(修改)字符操作使用 O(1) ;
空间复杂度 O(N) : Java 新建的 StringBuilder 都使用了线性大小的额外空间。

代码:

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

本文地址:https://blog.csdn.net/weixin_43508822/article/details/107357695

相关标签: 面试题 字符串