当前位置: 首页 > news >正文

java数据结构与算法刷题-----LeetCode151. 反转字符串中的单词

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846

在这里插入图片描述

解题思路
  1. 这道题,可以理解为,将字符串颠倒,但是每个单词原来的顺序是什么还是什么,不能改变单词的组合顺序,比如apple,able这个例子,字符串颠倒后为able,apple。整个字符串顺序颠倒了,但是apple和able这两个单词本身,不可以变化。
  2. 难点在于,每个单词中间的空格个数是不确定的,我们无法直接用split()等方法,直接按照空格为分隔符,将字符串分隔开来。会分隔出很多空字符串。
  3. 所以我们不以单个单词这样一个字符串作为单位进行反转,而是把整个字符串,转换为字符数组,进行判断
  1. 首先转换为字符数组: [ , , h, e, l, l, o, , w, o, r, l, d, , ]可以看到这个例子,有很多空字符串
  2. 然后我们先从左向右找到第一个非空字符[ , , h, e, l, l, o, , w, o, r, l, d, , ]
  3. 然后继续向左找到第一个空格[ , , h, e, l, l, o,空格, w, o, r, l, d, , ]
  4. 此时我们就找到了第一个单词的左右下标[ , , h, e, l, l, o, , w, o, r, l, d, , ]
  5. 将其插入新的数组中[w, o, r, l, d, , ],这样就完成了第一个单词的反转工作,也就是将最后一个单词放到第一个位置,然后单词不进行变化
  6. 然后重复上面的步骤,直到所有单词处理完成
代码

在这里插入图片描述

class Solution {public String reverseWords(String s) {char[] arr = s.toCharArray();//获取字符数组char[] newArr = new char[s.length()+1];//保存反转字符串的数组int index = 0;//newArr的下标,代表插入位置int i = s.length()-1;//我们从后往前遍历,将后面的元素,依次插入到newArr的前面,就实现了反转while(i >= 0){//只要还有元素可以遍历就继续while(i >= 0 && arr[i] == ' ') i--;//向左找到第一个非空格字符int right = i;//让right指向它,代表它是当前单词的最后一个字母位置while(i >= 0 && arr[i] != ' ') i--;//继续向左找第一个空格Afor(int j = i + 1; j <= right; j++){//那么这个A空格,右边第一个字符,就是这个单词的起始位置newArr[index++] = arr[j];//将这个单词插入newArrif(j == right){//如果插入完成newArr[index++] = ' ';//补上一个空格,分隔开来}}}if(index == 0){//如果没插入过字母,就返回空串return "";}return new String(newArr, 0, index-1);//返回答案}
}

相关文章:

java数据结构与算法刷题-----LeetCode151. 反转字符串中的单词

java数据结构与算法刷题目录&#xff08;剑指Offer、LeetCode、ACM&#xff09;-----主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/123063846 解题思路 这道题&#xff0c;可以理解为&#xff0c;将字符串颠倒&#xf…...

《Java 简易速速上手小册》第8章:Java 性能优化(2024 最新版)

文章目录 8.1 性能评估工具 - 你的性能探测仪8.1.1 基础知识8.1.2 重点案例&#xff1a;使用 VisualVM 监控应用性能8.1.3 拓展案例 1&#xff1a;使用 JProfiler 分析内存泄漏8.1.4 拓展案例 2&#xff1a;使用 Gatling 进行 Web 应用压力测试 8.2 JVM 调优 - 魔法引擎的调校8…...

mysql全国省市县三级联动创表sql(一)

1. 建表sql CREATE TABLE province (id VARCHAR ( 32 ) PRIMARY KEY COMMENT 主键,code CHAR ( 6 ) NOT NULL COMMENT 省份编码,name VARCHAR ( 40 ) NOT NULL COMMENT 省份名称 ) COMMENT 省份信息表;CREATE TABLE city (id VARCHAR ( 32 ) PRIMARY KEY COMMENT 主键,code …...

go面试题--使用两个goroutine交替打印数字与字母

使用两个goroutine交替打印数字与字母 题目如下&#xff1a; 使用两个goroutine交替打印序列&#xff0c;一个goroutine打印数字&#xff0c;另外一个goroutine打印字母&#xff0c;最终效果如下&#xff1a; 12AB34CD56EF78GH910IZ1112KL1314MN1516OP1718QR1920ST2122UV2324W…...

DolphinScheduler-3.2.0 集群搭建

目录 一、基础环境准备 1.1 组件下载地址 1.2 前置准备工作 二、 DolphinScheduler集群部署 2.1 解压安装包 2.2 配置数据库 2.3 准备 DolphinScheduler 启动环境 2.3.1 配置用户免密及权限 2.3.2 配置机器 SSH 免密登陆 2.3.3 启动 zookeeper集群 2.3.4 修改instal…...

07:Kubectl 命令详解|K8S资源对象管理|K8S集群管理(重难点)

Kubectl 命令详解&#xff5c;K8S资源对象管理&#xff5c;K8S集群管理 kubectl管理命令kubectl get 查询资源常用的排错命令kubectl run 创建容器 POD原理pod的生命周期 k8s资源对象管理资源文件使用资源文件管理对象Pod资源文件deploy资源文件 集群调度的规则扩容与缩减集群更…...

【设计模式】springboot3项目整合模板方法深入理解设计模式之模板方法(Template Method)

&#x1f389;&#x1f389;欢迎光临&#x1f389;&#x1f389; &#x1f3c5;我是苏泽&#xff0c;一位对技术充满热情的探索者和分享者。&#x1f680;&#x1f680; &#x1f31f;特别推荐给大家我的最新专栏《Spring 狂野之旅&#xff1a;底层原理高级进阶》 &#x1f680…...

Windows搭建docker+k8s

安装Docker Desktop 从官网下载&#xff0c;然后直接安装即可&#xff0c;过程很简单&#xff0c;一直Next就行。 有一点需要注意就是要看好对应的版本&#xff0c;因为后边涉及到版本的问题。 https://www.docker.com/products/docker-desktop 安装完成&#xff0c;双击图…...

年假作业10

一、选择题 BBDBACCCAD 二、填空题 1,4,13,40 3715 358 5 2 6 1 5 4 8 2 0 2 三、编程题 1、 #include <iostream> #include<array> #include <limits> using namespace std; int main() {array<int,10> score;array<int,10>::iterat…...

[ai笔记4] 将AI工具场景化,应用于生活和工作

欢迎来到文思源想的AI空间&#xff0c;这是技术老兵重学ai以及成长思考的第4篇分享内容&#xff01; 转眼已经到了大年初三&#xff0c;但是拜年的任务还只完成了一半&#xff0c;准备的大部头的书&#xff0c;现在也就看了两本&#xff0c;还好AI笔记通过每天早起坚持了下来。…...

【生产实测可用】Redis修改集群弱口令

起因 漏扫redis连接发现弱口令需要修改 先连上去看看是空口令还是弱口令 redis-cli -p 6379 -h a.b.c.d info sentinel找到启动服务器的配置文件 cp -av /app/redis-7001/redis.conf /app/redis-7001/redis.conf.bak20240207 echo "requirepass 口令" >>/a…...

备战蓝桥杯---图论基础理论

图的存储&#xff1a; 1.邻接矩阵&#xff1a; 我们用map[i][j]表示i--->j的边权 2.用vector数组&#xff08;在搜索专题的游戏一题中应用过&#xff09; 3.用邻接表&#xff1a; 下面是用链表实现的基本功能的代码&#xff1a; #include<bits/stdc.h> using nam…...

[office] excel2003进行可视性加密的方法 #媒体#其他#知识分享

excel2003进行可视性加密的方法 Excel如何对重要文件进行可视性的加密处理呢?下面是小编带来的关于excel2003进行可视性加密的方法&#xff0c;希望阅读过后对你有所启发! excel2003进行可视性加密的方法&#xff1a; 可视性加密步骤1&#xff1a;打开你要加密的excel2003文档…...

算法沉淀——分治算法(leetcode真题剖析)

算法沉淀——分治算法 快排思想01.颜色分类02.排序数组03.数组中的第K个最大元素04.库存管理 III 归并思想01.排序数组02.交易逆序对的总数03.计算右侧小于当前元素的个数04.翻转对 分治算法是一种解决问题的算法范式&#xff0c;其核心思想是将一个大问题分解成若干个小问题&a…...

Qt 进程守护程序

Qt 进程守护程序 简单粗暴的监控&#xff0c;方法可整合到其他代码。 一、windows环境下 1、进程查询函数 processCount函数用于查询系统所有运行的进程中该进程运行的数量&#xff0c;比如启动了5个A进程&#xff0c;该函数查询返回的结果就为5。 windows下使用了API接口查询…...

Linux_文件系统

假定外部存储设备为磁盘&#xff0c;文件如果没有被使用&#xff0c;那么它静静躺在磁盘上&#xff0c;如果它被使用&#xff0c;则文件将被加载进内存中。故此&#xff0c;可以将文件分为内存文件和磁盘文件。 内存文件 磁盘文件 软、硬链接 一.内存文件 1.1 c语言的文件接口 …...

算法沉淀——链表(leetcode真题剖析)

算法沉淀——链表 01.两数相加02.两两交换链表中的节点03.重排链表04.合并 K 个升序链表05.K个一组翻转链表 链表常用技巧 1、画图->直观形象、便于理解 2、引入虚拟"头节点" 3、要学会定义辅助节点&#xff08;比如双向链表的节点插入&#xff09; 4、快慢双指针…...

Flink从入门到实践(一):Flink入门、Flink部署

文章目录 系列文章索引一、快速上手1、导包2、求词频demo&#xff08;1&#xff09;要读取的数据&#xff08;2&#xff09;demo1&#xff1a;批处理&#xff08;离线处理&#xff09;&#xff08;3&#xff09;demo2 - lambda优化&#xff1a;批处理&#xff08;离线处理&…...

python分离字符串 2022年12月青少年电子学会等级考试 中小学生python编程等级考试二级真题答案解析

目录 python分离字符串 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序代码 四、程序说明 五、运行结果 六、考点分析 七、 推荐资料 1、蓝桥杯比赛 2、考级资料 3、其它资料 python分离字符串 2022年12月 python编程等级考试级编程题 一、题目要…...

Excel练习:折线图突出最大最小值

Excel练习&#xff1a;折线图突出最大最小值 ​​ 要点&#xff1a;NA值在折现图中不会被绘制&#xff0c;看似一条线&#xff0c;实际是三条线。换成0值和""都不行。 ‍ 查看所有已分享Excel文件-阿里云 ‍ 学习的这个视频&#xff1a;Excel折线图&#xff0c…...

AntiDupl.NET:数字资产管理师的智能图片去重解决方案

AntiDupl.NET&#xff1a;数字资产管理师的智能图片去重解决方案 【免费下载链接】AntiDupl A program to search similar and defect pictures on the disk 项目地址: https://gitcode.com/gh_mirrors/an/AntiDupl 在当今视觉内容爆炸的时代&#xff0c;无论是专业摄影…...

粒子追踪模拟单透镜聚焦comsol ansys Fluent 二维三维模型 仿真模型,文献复现

粒子追踪模拟单透镜聚焦comsol ansys Fluent 二维三维模型 仿真模型&#xff0c;文献复现&#xff0c;热湿传递在实验室折腾粒子追踪仿真的时候&#xff0c;最让人上头的莫过于单透镜聚焦的场景搭建。COMSOL和ANSYS这对冤家各有各的脾气——前者把物理场耦合玩出花&#xff0…...

douyin-downloader:抖音视频批量下载解决方案

douyin-downloader&#xff1a;抖音视频批量下载解决方案 【免费下载链接】douyin-downloader 项目地址: https://gitcode.com/GitHub_Trending/do/douyin-downloader 在数字内容爆炸的时代&#xff0c;视频资源的高效管理已成为内容创作者、教育工作者和社交媒体运营者…...

8_Harness驾驭工程实践:企业级落地与OpenAI案例解析

8_Harness驾驭工程实践&#xff1a;企业级落地与OpenAI案例解析 关键字&#xff1a; 企业级落地、OpenAI、Ryan Lopopolo、Codex、Harness Engineering、Citi Bank、Ancestry、Ulta Beauty、Agent-First开发、部署策略、自托管、成本优化、迁移路径、最佳实践、0行手写代码、百…...

避开Webots 2021b+的材质下载坑:保姆级配置2021a旧版本(附Ubuntu/PyCharm环境)

避开Webots 2021b的材质下载坑&#xff1a;保姆级配置2021a旧版本&#xff08;附Ubuntu/PyCharm环境&#xff09; 如果你最近尝试安装Webots最新版本时&#xff0c;遇到了材质无法下载的报错&#xff0c;这篇文章就是为你准备的。作为一个长期使用Webots进行机器人仿真的开发者…...

MIXBOX vs MisstarTools:小米路由器插件管理工具深度对比与选择建议

MIXBOX vs MisstarTools&#xff1a;小米路由器插件生态深度解析与实战指南 当小米路由器遇上第三方插件管理工具&#xff0c;整个设备的可玩性会瞬间提升几个层级。作为长期折腾智能路由的玩家&#xff0c;我几乎试遍了市面上所有主流的小米路由器增强方案&#xff0c;其中最让…...

轻量级MCU命令行交互系统设计与优化

1. 轻量级MCU命令行交互系统设计指南1.1 系统概述在嵌入式系统开发过程中&#xff0c;调试和维护阶段往往需要与单片机进行参数交互和操作控制。传统解决方案如RT-Thread的finsh组件虽然功能强大&#xff0c;但对于资源受限的MCU&#xff08;如ROM<64KB&#xff0c;RAM<8…...

FPGA实战:8点FFT运算的Verilog实现与误差优化技巧

FPGA实战&#xff1a;8点FFT运算的Verilog实现与误差优化技巧 在数字信号处理领域&#xff0c;快速傅里叶变换&#xff08;FFT&#xff09;算法是频谱分析的核心工具。对于FPGA开发者而言&#xff0c;掌握FFT的硬件实现不仅能提升系统性能&#xff0c;更能深入理解算法与硬件的…...

别再只用Canvas了!用Vue3组合式API优雅封装fabric.js的画笔与橡皮擦(附完整Hook代码)

重构Canvas交互&#xff1a;用Vue3组合式API封装fabric.js的工程化实践 在Web图形编辑领域&#xff0c;fabric.js以其强大的对象模型和交互能力成为许多开发者的首选。但当我们将它集成到Vue3项目中时&#xff0c;常常会遇到状态管理混乱、代码耦合度高的问题。本文将展示如何用…...

ccmusic-database新手教程:Gradio输出组件定制——增强Top5结果可读性技巧

ccmusic-database新手教程&#xff1a;Gradio输出组件定制——增强Top5结果可读性技巧 1. 项目简介与背景 ccmusic-database是一个基于深度学习的音乐流派分类系统&#xff0c;它能够自动识别音频文件所属的音乐流派。这个系统在计算机视觉预训练模型VGG19_BN的基础上进行微调…...