第五期:字符串的一些有意思的操作
文章目录
- 1. 替换空格
- 2. 字符串的左旋转
- 3. 答案代码
- 3.1 替换空格
- 3.2 字符串的左旋转
PS:每道题解题方法不唯一,欢迎讨论!每道题后都有解析帮助你分析做题,答案在最下面,关注博主每天持续更新。
1. 替换空格
题目描述
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例1:
输入:s = “We are happy.”
输出:“We%20are%20happy.”
示例2:
输入:s = “hello world.”
输出:s = “hello%20world.”
解析:
在Java中我们要知道字符串的本身是没办法直接改变的,所有只能在一个新的字符串上面实现。
所有我们就有了思路,创建一个新的字符串,遍历老的字符串,当是空格的时候新的字符串加上个%20,不是空格直接加上这个字符,最后遍历完成,得到的字符串便是我们想要的结果。(方法一)
注意:
- 创建新的字符串不能创建String类型,要创建StringBuilder ,因为String在相加的时候一直创建新的字符串,消耗内存大。
-也可以使用库方法replace(),但是这样便失去了刷题的意义,而且在面试的时候,面试官也不希望看到这样的代码。(方法二)
2. 字符串的左旋转
题目描述
字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
示例1:
输入: s = “abcdefg”, k = 2
输出: “cdefgab”
示例2:
输入: s = “lrloseumgh”, k = 6
输出: “umghlrlose”
解析:
这道题有个取巧的方法,就是应用切片函数,进行字符串的切片,调用substring()库方法。(方法一)。
面试的时候这种方法可能不让用,所以我们可以用另一种方法。
列表遍历拼接,创建一个StringBuilder的字符串,依次拼接k + 1到末尾字符,然后再拼接首位字符到k,最后返回字符串。(方法二)
还可以通过旋转字符的方式来做,但是比较麻烦,我们先把字符串转为字符数组,然后分别旋转0 ~ k-1,k ~ arr.length - 1坐标元素,最后再旋转整个数组,把这个数组再转化为字符串,我们便得到了我们想要的结果。(方法三)
3. 答案代码
3.1 替换空格
//方法一public String replaceSpace(String s) {StringBuilder stringbuilder = new StringBuilder();int len = s.length();for(int i = 0; i < len; i++){char ch = s.charAt(i);if(ch == ' '){stringbuilder.append("%20");}else{stringbuilder.append(ch);}}return stringbuilder.toString();}//方法二 public String replaceSpace(String s) {return s.replace(" ", "%20");}
3.2 字符串的左旋转
//方法一public String reverseLeftWords(String s, int n) {return s.substring(n) + s.substring(0, n); }//方法二public String reverseLeftWords(String s, int n) {StringBuilder res = new StringBuilder();for(int i = n; i < s.length(); i++){res.append(s.charAt(i));}for(int i = 0; i < n; i++){res.append(s.charAt(i));} return res.toString();}//方法三public String reverseLeftWords(String s, int n) {char[] arr = s.toCharArray();reverse(arr, 0, n - 1);reverse(arr, n, arr.length - 1);reverse(arr, 0, arr.length - 1);s = new String(arr);return s;}public void reverse(char[] arr, int left, int right){while(left < right){char tmp = arr[left];arr[left] = arr[right];arr[right] = tmp;left++;right--;}}
相关文章:
第五期:字符串的一些有意思的操作
文章目录 1. 替换空格2. 字符串的左旋转3. 答案代码3.1 替换空格3.2 字符串的左旋转 PS:每道题解题方法不唯一,欢迎讨论!每道题后都有解析帮助你分析做题,答案在最下面,关注博主每天持续更新。 1. 替换空格 题目描述 请…...
使用Anaconda3结合vscode来实现django项目的建立(绝好的介绍)20230608
问题:如何使用Anaconda3结合vscode来实现django项目的建立? 回答: 知识背景 Anaconda3的安装包默认会安装最新版本的Python解释器。如果您想在安装时指定Python解释器的版本,您需要下载对应版本的Anaconda3。例如,如果您想使用Python 3.7&…...
【软件测试】软件测试的基本概念和开发模型
1. 前言 在进行软件测试的学习之前,我们要了解软件测试一些基本概念. 这些基本概念将帮助我们更加明确工作的目标以及软件测试到底要做什么. 2. 软件测试的基本概念 软件测试的基本概念有3个,分别是需求,测试用例和BUG. 2.1 需求 这里的需求还可以分为 用户需求和软件需求,用户…...
接口测试 —— 接口测试定义
1、接口测试概念 (重点) 接口测试是测试系统组件间接口的一种测试,它界于单元测试与系统测试中间。 接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。 测试的重点是要检查数据的交换,传递和控制管理过…...
2015 年一月联考逻辑真题
2015 年一月联考逻辑真题 真题(2015-26) 26.晴朗的夜晚我们可以看到满天星斗,其中有些是自身发光的恒星,有些是自身不发光但可以反射附近恒星光的行星。恒星尽管遥远,但是有些可以被现有的光学望远镜“看到”。和恒星不…...
基于GD32的定时器不完全详解--定时、级联
SysTick 定时器 SysTick 是一个 24 位的倒计数定时器,当计到 0 时,将从 RELOAD 寄存器中自动重装载定时初值。只要不把它在 SysTick 控制及状态寄存器中的使能位清除, 就永不停息。 该定时器的介绍在MCU的手册中一般不会介绍,因为…...
Clion开发STM32之ESP8266系列(四)
前言 上一篇: Clion开发STM32之ESP8266系列(三) 本篇主要内容 实现esp8266需要实现的函数串口3中断函数的自定义(这里没有使用HAL提供的)封装esp8266服务端的代码和测试 正文 主要修改部分 核心配置头文件(添加一些宏定义) sys_core_conf.h文件中…...
降本增效,StarRocks 在同程旅行的实践
作者:周涛 同程旅行数据中心大数据研发工程师 同程旅行是中国在线旅游行业的创新者和市场领导者。作为一家一站式平台,同程旅行致力于满足用户旅游需求,秉持 "让旅行更简单、更快乐" 的使命,主要通过包括微信小程序、AP…...
INTP型人格适合选择哪些专业?
INTP人格内倾理性人格、具有强烈的好奇心、创造性和独立性的特点。他们善于独立思考和寻找问题的本质,并对抽象的想法和理论感兴趣。 INTP人格的人具有很强的逻辑思维和分析能力,他们的思维方式非常系统,追求完美和准确。因此他们适合选择需…...
【LeetCode热题100】打卡第16天:组合总和
文章目录 组合总和⛅前言🔒题目🔑题解 组合总和 ⛅前言 大家好,我是知识汲取者,欢迎来到我的LeetCode热题100刷题专栏! 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数…...
tinkerCAD案例:1.戒子环
基本戒指 在本课中,您将学习使用圆柱形状制作戒指。来吧! 说明 将圆柱体拖动到工作平面上并使其成为孔。 圆柱体应缩放以适合其制造手指。 在本例中,我们将使用 17mm 作为直径,但请根据您的需要随意调整尺寸。 将“圆柱”形状拖…...
RPC接口测试技术-Tcp 协议的接口测试
【摘要】 首先明确 Tcp 的概念,针对 Tcp 协议进行接口测试,是指基于 Tcp 协议的上层协议比如 Http ,串口,网口, Socket 等。这些协议与 Http 测试方法类似(具体查看接口自动化测试章节)…...
MyBatis Plus基本用法-SpringBoot框架
依赖 使用 Mybatis Plus 框架时,需要添加以下依赖: <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>latest-version</version> </dependency…...
指针--指针变量的定义和初始化
存放变量的地址需要一种特殊类型的变量,这种特殊的数据类型就是指针(Pointer)。 具有指针类型的变量,称为指针变量,它时专门用于存储变量的地址值和变量。 其定义形式如下: 类型关键字 * 指针变量名&#x…...
Web基本概念
一、前言 World Wide Web的简称,是一个由许多互相链接的超文本组成的系统,通过互联网访问 (为用户提供信息) 静态网页 仅适用于不能经常更改内容的网页; 动态网页 网络编程技术创建的页面;通过在传统的静态…...
Niagara—— Texture Sample 与 Particle Subuv 区别
目录 一,Texture Sample 二,Particle Subuv 一,Texture Sample 此节点是最基本的采样节点,依据UV坐标来采样Texture; MipValueMode,设置采样的Mipmap Level; None,根据当前Texture…...
如何在食品行业运用IPD?
食品是我国重要的民生产业之一,是保障和满足人民群众不断增长消费需求的重要支撑。食品指各种供人食用或者饮用的成品和原料以及按照传统既是食品又是药品的物品,包括加工食品,半成品和未加工食品,不包括烟草或只作药品用的物质。…...
如何用pandas进行条件分组计算?
Pandas提供了强大的分组聚合功能,可以轻松进行条件分组计算和统计。本文通过一个例子,展示如何使用Pandas的.groupby()和.agg()方法进行条件分组计算。 准备数据 假设有这样一个字典数据: dict { 姓名: [张三,李四,王五&#x…...
tomcat如何调优,涉及哪些参数?
Tomcat是一个流行的开源Java Servlet容器,用于部署和管理Java Web应用程序。调优Tomcat可以提高性能、并发处理能力和稳定性。以下是一些常见的Tomcat调优参数和技巧: 1.调整内存参数: -Xms:指定Tomcat启动时的初始堆内存大小。 -…...
java培训机构学校教学教务选课管理平台springboot+vue
近年来,随着培训机构机构规模的逐渐增大,人工书写的方式已经不能满足如此庞大的数据。为了更好的适应信息时代的高效性,一个利用计算机来实现培训机构教务管理工作的系统将必然诞生。基于这一点,设计了一个培训机构教务管理系统&a…...
路径规划算法技术选型与实战指南:从理论到工程落地
路径规划算法技术选型与实战指南:从理论到工程落地 【免费下载链接】PathPlanning Common used path planning algorithms with animations. 项目地址: https://gitcode.com/gh_mirrors/pa/PathPlanning 当仓库机器人在密集货架间灵活避障,当无人…...
Kimi-VL-A3B-Thinking Chainlit定制化开发:添加历史记录/多用户会话/图片标注功能
Kimi-VL-A3B-Thinking Chainlit定制化开发:添加历史记录/多用户会话/图片标注功能 1. 项目背景与模型介绍 Kimi-VL-A3B-Thinking是一款基于混合专家架构(MoE)的开源视觉语言模型(VLM),在多模态推理和长上下文理解方面表现出色。该模型仅激活2.8B参数就…...
如何用NanoMsg的6种通信模式搞定分布式系统开发?附代码示例
如何用NanoMsg的6种通信模式构建高可靠分布式系统?实战代码解析 在分布式系统开发中,通信模式的选择往往决定了整个架构的扩展性和可靠性。NanoMsg作为轻量级高性能通信库,提供了6种经过验证的通信模式,每种都对应着特定的应用场景…...
喜马拉雅FM专辑下载器:离线收听与个人音频管理的实用方案
喜马拉雅FM专辑下载器:离线收听与个人音频管理的实用方案 【免费下载链接】xmly-downloader-qt5 喜马拉雅FM专辑下载器. 支持VIP与付费专辑. 使用GoQt5编写(Not Qt Binding). 项目地址: https://gitcode.com/gh_mirrors/xm/xmly-downloader-qt5 如果您经常收…...
无人机远程识别系统的技术突破与实践指南
无人机远程识别系统的技术突破与实践指南 【免费下载链接】ArduRemoteID RemoteID support using OpenDroneID 项目地址: https://gitcode.com/gh_mirrors/ar/ArduRemoteID 随着无人机技术的快速发展,全球范围内对无人机安全监管的要求日益严格。各国 aviati…...
Magisk完整指南:Android设备终极Root与系统定制解决方案
Magisk完整指南:Android设备终极Root与系统定制解决方案 【免费下载链接】Magisk The Magic Mask for Android 项目地址: https://gitcode.com/GitHub_Trending/ma/Magisk Magisk是一款革命性的Android系统定制工具套件,它通过独特的系统无痕修改…...
工业自动化实战:三大品牌伺服驱动器IO与串口引脚接线全解析
1. 伺服驱动器接线基础:为什么IO与串口引脚如此重要 第一次接触伺服驱动器时,我被密密麻麻的接线端子吓到了。后来才发现,只要理解几个核心引脚的功能,剩下的都是举一反三。伺服驱动器的IO和串口引脚就像机器的"神经系统&quo…...
半导体晶圆测量中的5大常见误区:从台阶仪到无图晶圆系统的避坑指南
半导体晶圆测量中的5大常见误区:从台阶仪到无图晶圆系统的避坑指南 在半导体制造领域,晶圆测量是确保器件性能与良率的关键环节。然而,即使是经验丰富的工程师,也常因忽视某些细节而陷入测量陷阱。本文将揭示五个最具隐蔽性的操作…...
3个核心价值:bilibili-api的API开发与数据接口应用
3个核心价值:bilibili-api的API开发与数据接口应用 【免费下载链接】bilibili-api B站API收集整理及开发,不再维护 项目地址: https://gitcode.com/gh_mirrors/bil/bilibili-api 作为开发者,我们经常需要获取B站丰富的视频、用户及互动…...
5分钟解锁WeMod专业版:开源工具让你的游戏修改体验全面升级
5分钟解锁WeMod专业版:开源工具让你的游戏修改体验全面升级 【免费下载链接】Wemod-Patcher WeMod patcher allows you to get some WeMod Pro features absolutely free 项目地址: https://gitcode.com/gh_mirrors/we/Wemod-Patcher 还在为WeMod专业版的订阅…...
