Leetcode-每日一题【剑指 Offer 05. 替换空格】

题目 

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

示例 1:

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

限制:

0 <= s 的长度 <= 10000

解题思路

前置知识

StringBuilder

StringBuilder是Java中的一个可变字符串类,它属于java.lang包。与String类不同,StringBuilder对象的值可以修改,而不会创建新的对象。这使得StringBuilder在需要频繁修改字符串内容的场景下更加高效。

StringBuilder类提供了一系列方法来操作字符串,例如追加、插入、删除、替换等。它的主要特点包括:

1. 可变性:StringBuilder对象的值可以修改,不会创建新的对象。这使得在修改字符串时,不需要频繁地创建新的字符串对象,从而提高了性能。

2. 高效性:StringBuilder类使用了可变的字符数组来存储字符串内容,这使得对字符串的操作更加高效。相比之下,String类中的字符串是不可变的,每次对字符串进行修改时都会创建一个新的字符串对象,导致额外的内存开销。

3. 线程不安全:StringBuilder类是非线程安全的,不适合在多线程环境下使用。如果需要在多线程环境中使用可变字符串,可以使用线程安全的StringBuffer类。

使用StringBuilder类可以方便地进行字符串的拼接、修改和处理,特别适用于需要频繁修改字符串内容的情况,例如循环拼接字符串、动态生成字符串等。

 找到了StringBuilder后,我们一起来看一下这道题

1.题目要求我们把字符串 s 中的每个空格替换成"%20"。因为在java中的String类中的字符串是不可变的,我们需要创建一个新的字符串对象,所以我们先创建一个  StringBuilder 类型的builder,然后用 for()循环遍历原字符串。

2.当遍历到空格时,我们就将“%20”加入bulider中,其余的字符直接加入即可,最后我们将builder转换为字符串输出即可。

代码实现

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

测试结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/53591.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue + ElementUI 实现可编辑表格及校验

效果 完整代码见文末 实现思路 使用两个表单分别用于实现修改和新增处理。 通过一个editIndex变量判断是否是编辑状态来决定是否展示输入框&#xff0c;当点击指定行的修改后进行设置即可&#xff1a; <el-table-columnv-for"(column, index) in columns":key&qu…

下载Windows 10光盘镜像(ISO文件)

文章目录 下载Windows 10镜像文件 下载Windows 10镜像文件 打开微软官网下载地址 立即下载工具 找到下载工具&#xff0c;双击运行&#xff0c;等待 接受条款&#xff0c;等待 选择为另一台电脑安装介质 选择Windows10&#xff0c;下一步 选择ISO文件&#xff0c;…

HTTP——五、与HTTP协作的Web服务器

HTTP 一、用单台虚拟主机实现多个域名二、通信数据转发程序 &#xff1a;代理、网关、隧道1、代理2、网关3、隧道 三、保存资源的缓存1、缓存的有效期限2、客户端的缓存 一台 Web 服务器可搭建多个独立域名的 Web 网站&#xff0c;也可作为通信路径上的中转服务器提升传输效率。…

nginx部署本地umi build项目

一、安装 brew install nginxBrew 安装可以参考网上教程 https://juejin.cn/post/6986190222241464350 安装后启动nginx服务查看是否成功 brew services start nginx启动报错 Error: undefined method launchd_service_path‘ for xxx 解决&#xff1a;更新brew brew updat…

AI相机“妙鸭相机”原理分析和手动实现方案

妙鸭相机 一个通过上传大约20张照片&#xff0c;生成专属自拍。在2023年7月末爆火&#xff0c;根据36Kr报道&#xff0c;妙鸭相机系阿里系产品&#xff0c;挂靠在阿里大文娱体系下&#xff0c;并非独立公司。 使用方法是上传20张自拍照片&#xff0c;之后可以选择模板生成自己…

【新版系统架构补充】-嵌入式技术

嵌入式微处理体系结构 冯诺依曼结构 传统计算机采用冯诺依曼结构&#xff0c;也称普林斯顿结构&#xff0c;是一种将程序指令存储器和数据存储器合并在一起的存储器结构 冯诺依曼的计算机程序和数据共用一个存储空间&#xff0c;程序指令存储地址和数据存储地址指向同一个存…

ConcurrentHashMap 的简单介绍

ConcurrentHashMap是Java集合框架中的一个并发容器&#xff0c;它是线程安全的哈希表的实现。它被设计为比Hashtable和SynchronizedMap&#xff08;通过使用同步方法或块来保证线程安全&#xff09;更高效和可扩展的替代品。 ConcurrentHashMap具有以下特点&#xff1a; 线程…

Qt应用开发(基础篇)——滑块类 QSlider、QScrollBar、QDial

一、前言 滑块类QScrollBar、QSlider和QDial继承于QAbstractSlider&#xff0c;父类主要拥有最大值、最小值、步长、当前值、滑块坐标等信息&#xff0c;滑动的时候触发包含值数据变化、滑块按下、滑块释放等信号。键盘包括左/上和右/下箭头键通过定义的singleStep改变当前值&a…

JavaScript |(六)DOM事件 | 尚硅谷JavaScript基础实战

学习来源&#xff1a;尚硅谷JavaScript基础&实战丨JS入门到精通全套完整版 文章目录 &#x1f4da;事件对象&#x1f4da;事件的冒泡&#x1f4da;事件的委派&#x1f4da;事件的绑定&#x1f407;赋值绑定&#x1f407;addEventListener()&#x1f407;attachEvent()&…

使用socket实现UDP版的回显服务器

文章目录 1. Socket简介2. DatagramSocket3. DatagramPacket4. InetSocketAddress5. 实现UDP版的回显服务器 1. Socket简介 Socket&#xff08;Java套接字&#xff09;是Java编程语言提供的一组类和接口&#xff0c;用于实现网络通信。它基于Socket编程接口&#xff0c;提供了…

Netty使用和常用组件辨析

Netty 使用和常用组件 简述 <dependency> <groupId>io.netty</groupId> <artifactId>netty-all</artifactId <version>4.1.42.Final </version> <scope>compile</scope> </dependency> Netty 的优势 1 、 AP…

Qt使用QQuickWidget的输入法问题(Qt5.12及以前)

Qt使用QQuickWidget的输入法问题&#xff08;Qt5.12及以前&#xff09; 最近有网友表示&#xff0c;在使用QQuickWidget嵌入到QWidget时&#xff0c;QML内部的输入法会有问题。 主要表现是&#xff0c;当焦点从QWidget&#xff08;比如QLineEdit&#xff09;切换到QQuickWidg…