LeetCode 替换空格

题目描述

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

实例 1:

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

一得之见(Java/Python)

使用 Java 的 replaceAll()方法,直接进行替换

    /**
* 把字符串 s 中的每个空格替换成"%20"。
*
* @param s 原字符串
* @return 替换后字符串
*/
public static String replaceSpace(String s) {
return s.replaceAll(" ", "%20");
}

使用 Python 的 replace()方法,直接进行替换

def replace_space(s: str) -> str:
"""
把字符串 s 中的每个空格替换成"%20"。
:param s: 原字符串
:return: 替换后字符串
"""
return s.replace(" ", "%20")

他山之石(Java/Python)

由于每次替换从 1 个字符变成 3 个字符,使用字符数组课方便进行替换。简历字符数组的长度为 s 的长度的 3 被,这样可保证字符数组可以容纳所有替换后的字符。

  • 获得 s 的长度 length
  • 创建字符数组 array,其长度为 length*3
  • 初始化 size 为 0,size 表示替换后的字符串的长度
  • 从左到右遍历字符串 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) 空间复杂度:O(n)

    /**
* 把字符串 s 中的每个空格替换成"%20"。
*
* @param s 原字符串
* @return 替换后字符串
*/
public static String replaceSpaceTwo(String s) {
int sLen = s.length();
char[] sArray = new char[sLen * 3];
int size = 0;
for (int i = 0; i < sLen; i++) {
char c = s.charAt(i);
if (c == ' ') {
sArray[size++] = '%';
sArray[size++] = '2';
sArray[size++] = '0';
} else {
sArray[size++] = c;
}
}
String newStr = new String(sArray, 0, size);
return newStr;
}
  • 初始化一个 list,记为 res
  • 遍历列表 s 的每个字符 c:
    • 当 c 为空格时:向 res 后添加字符串"%20"
    • 当 c 不为空格时:向 res 后添加字符串 c
  • 将列表 s 转换为字符串并返回。

时间复杂度:O(n) 空间复杂度:O(n)

def replace_space_two(s: str) -> str:
"""
把字符串 s 中的每个空格替换成"%20"。
:param s: 原字符串
:return: 替换后字符串
"""
res = []
for c in s:
if c == ' ':
res.append("%20")
else:
res.append(c)
return "".join(res)

效率对比(Java)

输入:"We are happy"
方法一:3575700ns
方法二:338300ns

效率对比(Python)

输入:"We are happy"
方法一:3300ns
方法二:7600ns

LeetCode替换空格的更多相关文章

  1. 剑指Offer面试题:3.替换空格

    一.题目:替换空格 题目:请实现一个函数,把字符串中的每个空格替换成"%20".例如输入“We are happy.”,则输出“We%20are%20happy.”. 在网络编程中 ...

  2. 剑指Offer 替换空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成“%20”.例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy.   思路: 替换空格,先遍历一遍记 ...

  3. 剑指Offer:面试题4——替换空格(java实现)

    问题描述:请实现一个函数,把字符串中的每个空格替换成"%20". 例如: 输入:"We are happy." 输出:"We%20are%20happ ...

  4. 【面试题004】c/c++字符串,替换空格

      一,c/c++字符串 1.C/C++中每个字符串都以字符’\0‘作为结尾,这样我们就能很方便地找到字符串的最后尾部. 由于这个原因每个字符串都有一个额外的开销,注意字符串越界的问题: 2.C/C+ ...

  5. 【C语言】字符串替换空格:实现一个函数,把字符串里的空格替换成“%20”

    //字符串替换空格:实现一个函数,把字符串里的空格替换成"%20" #include <stdio.h> #include <assert.h> void ...

  6. 剑指offer-面试题4.替换空格

    题目:请实现一个函数,把字符串中的每个空格都替换成"%20".例如输入"We are happy." 则输出"We%20are%20happy.&qu ...

  7. 剑指offer编程题Java实现——替换空格

    题目描述 请实现一个函数,将一个字符串中的空格替换成"%20".例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy. package ...

  8. 【剑指offer】04替换空格,C++实现

    0.前言 # 替换空格为字符串部分的题目,剑指offer中字符串系列的文章地址,剑指offer全系列文章地址 1.题目 # 请实现一个函数,将一个字符串中的空格替换成"%20".例 ...

  9. 剑指offer面试题4 替换空格(java)

    注:利用java中stringBuilder,append,length方法很方便的解决字符串问题 /* * 剑指offer 替换空格 * xsf * */ /*开始替换空格的函数,length为原数 ...

随机推荐

  1. Android DataBinding使用详解

    简介 DataBinding是一个自动绑定UI的框架. 使用DataBinding需要在app根目录的build.gradle文件中加入DataBinding配置: android { .... da ...

  2. cf Two Sets (我用二分最大匹配做的)

    题意: n个数p1,p2....pn     两个数a,b 把它们分成A,B两个集合. 若x属于A,a-x一定属于A. 若x属于B,b-x一定属于B. 问是否可能将这n个数分成两个集合.若可以,输出每 ...

  3. Docker 添加--insecure-registry 私有镜像仓库

    方法一 [root@k8s-master01]# vi /usr/lib/systemd/system/docker.service ExecStart=/usr/bin/dockerd --inse ...

  4. Xtrabackup 全量备份脚本

    #!/bin/bash #备份文件的名字为当前主机的IP地址+tar.gz,例如172.16.103.1.tar.gz,且每次备份成功之后都会清空本地的备份目录. #相关目录 mkdir -p /xt ...

  5. centos 下安装docker

    官方文档比较累赘,简化就三步 1.安装依赖 yum -y install gcc gcc-c++ yum-utils device-mapper-persistent-data lvm2 2.添加re ...

  6. namaspace之pid namespace

    认识Namespace namespace 是 Linux 内核用来隔离内核资源的方式.通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的 ...

  7. RabbitMQ(六)消息幂等性处理

    一.springboot整合rabbitmq 我们需要新建两个工程,一个作为生产者,另一个作为消费者.在pom.xml中添加amqp依赖: <dependency> <groupId ...

  8. FZU ICPC 2020 寒假训练 4 —— 模拟(二)

    P1056 排座椅 题目描述 上课的时候总会有一些同学和前后左右的人交头接耳,这是令小学班主任十分头疼的一件事情.不过,班主任小雪发现了一些有趣的现象,当同学们的座次确定下来之后,只有有限的 D 对同 ...

  9. 从零开始制作一个linux iso镜像

    一.前言     对于一个极简化的linux系统而言,只需要三个部分就能组成,它们分别是一个linux内核.一个根文件系统和引导.以下是本文制作linux iso镜像所用到的系统和软件:     OS ...

  10. OPPO 图数据库平台建设及业务落地

    本文首发于 OPPO 数智技术公众号,WeChat ID: OPPO_tech 1.什么是图数据库 图数据库(Graph database)是以图这种数据结构存储和查询的数据库.与其他数据库不同,关系 ...