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

每日算法练习:LeetCode 151. 反转字符串中的单词 ✅

大家好我是你们的算法小伙伴。今天我们来练习一道字符串处理的经典中等题 ——LeetCode 151. 反转字符串中的单词。这道题考察对空格和单词边界的处理是面试中高频的字符串操作题。题目描述给你一个字符串s请你反转字符串中单词的顺序。单词是由非空格字符组成的字符串。s中使用至少一个空格将单词分隔开。返回单词顺序颠倒且单词之间用单个空格连接的结果字符串。注意输入字符串s中可能会存在前导空格、尾随空格或者单词间的多个空格。返回的结果字符串中单词间应当仅用单个空格分隔且不包含任何额外的空格。示例 1输入s the sky is blue 输出blue is sky the示例 2输入s hello world 输出world hello 解释反转后的字符串中不能存在前导空格和尾随空格。示例 3输入s a good example 输出example good a 解释如果两个单词间有多余的空格反转后的字符串需要将单词间的空格减少到仅有一个。解题思路核心思路拆分 → 反转 → 拼接拆分单词将原字符串按空格分割自动过滤掉空字符串处理多余空格。反转单词顺序将拆分得到的单词列表逆序排列。重新拼接用单个空格将逆序后的单词列表拼接成结果字符串。这种方法在 Java 中实现简洁且能自动处理所有空格问题。代码实现class Solution { public String reverseWords(String s) { // 1. 按空格分割字符串自动过滤空字符串处理多余空格 String[] words s.trim().split(\\s); // 2. 反转单词顺序 StringBuilder sb new StringBuilder(); for (int i words.length - 1; i 0; i--) { sb.append(words[i]); // 最后一个单词后不加空格 if (i ! 0) { sb.append( ); } } return sb.toString(); } }代码详解结合示例 2 模拟示例 2s hello world s.trim()去除首尾空格 →hello world.split(\\s)按一个或多个空格分割得到单词数组 →[hello, world]逆序拼接先加world再加空格再加hello不加空格结果 →world hello与示例一致进阶原地解法O (1) 额外空间Java 需转成字符数组class Solution { public String reverseWords(String s) { char[] chars s.toCharArray(); int n chars.length; // 1. 反转整个字符串 reverse(chars, 0, n - 1); // 2. 反转每个单词 int start 0; for (int i 0; i n; i) { if (chars[i] ) { reverse(chars, start, i - 1); start i 1; } } // 反转最后一个单词 reverse(chars, start, n - 1); // 3. 清理多余空格 StringBuilder sb new StringBuilder(); for (char c : chars) { if (c ! ) { sb.append(c); } else if (!sb.isEmpty() sb.charAt(sb.length() - 1) ! ) { sb.append( ); } } // 去除末尾可能的空格 if (!sb.isEmpty() sb.charAt(sb.length() - 1) ) { sb.deleteCharAt(sb.length() - 1); } return sb.toString(); } // 辅助函数反转字符数组的 [l, r] 区间 private void reverse(char[] chars, int l, int r) { while (l r) { char temp chars[l]; chars[l] chars[r]; chars[r] temp; l; r--; } } }复杂度分析方法时间复杂度空间复杂度拆分反转拼接O(n)O (n)存储单词数组原地解法O(n)O (1)仅使用常数级额外空间总结核心技巧利用split(\\s)自动处理多余空格再逆序拼接代码简洁高效。进阶思路原地反转整个字符串后再逐个反转单词实现 O (1) 额外空间适合面试时展示更优的算法思维。边界处理自动处理前导、尾随、单词间多余空格保证结果字符串格式正确。这道题是字符串处理的经典题掌握这两种思路就能轻松解决这类单词反转和空格清理的问题。今天的每日算法练习就到这里我们明天再见

相关文章:

每日算法练习:LeetCode 151. 反转字符串中的单词 ✅

大家好,我是你们的算法小伙伴。今天我们来练习一道字符串处理的经典中等题 ——LeetCode 151. 反转字符串中的单词。这道题考察对空格和单词边界的处理,是面试中高频的字符串操作题。题目描述给你一个字符串 s,请你反转字符串中单词的顺序。单…...

STM32架构解析:哈佛与冯·诺依曼的工程实践

STM32处理器架构解析:哈佛结构与冯诺依曼结构的工程实践 1. 计算机体系结构基础 1.1 冯诺依曼体系结构 冯诺依曼体系结构(Von Neumann architecture)是现代计算机的基础设计范式,其核心特征包括: 统一存储结构 &am…...

Halcon角度计算双雄对比:orientation_region和smallest_rectangle2到底该用哪个?

Halcon角度计算双雄对比:orientation_region与smallest_rectangle2的实战抉择 在工业视觉检测中,区域角度计算是定位、对齐和测量的基础操作。Halcon作为机器视觉领域的标杆工具,提供了orientation_region和smallest_rectangle2两个核心算子来…...

C语言和C++有啥区别?孩子学编程该选哪个

C乃是当下国内信息学奥赛所指定的语言,它还是现今最为流行的编程语言当中的一种,所以不少孩子于选择编程语言去学习时,会挑选C这种编程语言。从C的名字不难看出,它跟老牌语言C语言之间有着颇深的关系。那么,C与C语言的…...

保障AI安全:YOLOv12模型鲁棒性测试与对抗样本防御

保障AI安全:YOLOv12模型鲁棒性测试与对抗样本防御 在智能安防、自动驾驶这些关键领域,AI模型,尤其是像YOLOv12这样的目标检测模型,已经成为了核心的“眼睛”。我们依赖它来识别行人、车辆,做出至关重要的判断。但你想…...

论文AI率从80%降到10%以下的完整攻略:实测3款降AI率工具真实效果

论文AI率从80%降到10%以下的完整攻略:实测3款降AI率工具真实效果 上个月我同学发来一张知网检测报告,AI率87%,整个人都懵了。她用DeepSeek写了大部分初稿,没想到检测会这么高。当时距离论文提交截止不到两周,她问我有没…...

7个维度解锁洛雪音乐音源:从新手到专家的全方位指南

7个维度解锁洛雪音乐音源:从新手到专家的全方位指南 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐音源作为GitHub加速计划的重要组成,是一款专注于音乐资源聚合的…...

Unix哲学:一切皆文件与网络通信的统一抽象

目录 Unix哲学:一切皆文件与网络通信的统一抽象 1. Unix哲学的核心:“一切皆文件” 2. 统一接口:Unix I/O操作 3. 文件描述符:操作的“取货单” 4. 网络通信:套接字作为特殊文件 5. 总结:抽象的力量 前…...

Nunchaku-flux-1-dev在Typora文档中的自动插图生成

Nunchaku-flux-1-dev在Typora文档中的自动插图生成 1. 引言 写技术文档最头疼的是什么?对我来说,一定是配图。每次写到关键的技术概念或者流程说明,都得停下来去找合适的示意图,或者打开绘图工具手动制作。不仅打断思路&#xf…...

比迪丽FLUX.1效果对比:相比SDXL,面部结构准确率提升18.7%

比迪丽FLUX.1效果对比:相比SDXL,面部结构准确率提升18.7% 1. 引言:当动漫角色遇上新一代AI绘画引擎 如果你是一位《龙珠》的粉丝,或者热衷于用AI生成动漫角色,那么“比迪丽”这个名字你一定不陌生。作为悟饭的妻子&a…...

YOLO X Layout与Python结合实战:自动化文档结构解析应用

YOLO X Layout与Python结合实战:自动化文档结构解析应用 1. 项目背景与价值 在日常工作中,我们经常会遇到大量需要处理的文档——扫描的合同、电子发票、研究报告、技术文档等等。传统的人工处理方式不仅效率低下,还容易出错。想象一下&…...

Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测

Realistic Vision V5.1显存占用对比:启用offload前后VRAM峰值下降62%实测 1. 项目背景与技术特点 Realistic Vision V5.1是目前Stable Diffusion 1.5生态中最顶级的写实风格模型之一,能够生成媲美专业单反相机拍摄的人像作品。然而在实际使用中&#x…...

FPGA仿真提速秘籍:手把手教你配置VSCode,一键运行iverilog编译+GTKWave看波形

FPGA仿真效率革命:VSCodeiverilogGTKWave全自动化工作流实战 在数字电路设计领域,仿真验证环节往往占据整个开发周期60%以上的时间。传统基于命令行的仿真流程需要工程师反复输入冗长指令,手动切换多个工具界面,这种低效的工作模…...

通义千问3-4B-Instruct-2507调优技巧:提高指令遵循准确率

通义千问3-4B-Instruct-2507调优技巧:提高指令遵循准确率 通义千问3-4B-Instruct-2507,这个听起来有点长的名字,其实是一个特别适合我们普通开发者和爱好者玩转的AI小模型。它只有40亿参数,但阿里在2025年8月把它开源出来的时候&…...

如何评价目前主流的AI论文生成软件?哪一款最好用?

目前主流 AI 论文工具已形成清晰的中文全流程、英文国际、文献 / 润色专项三大阵营,PaperRed、毕业之家是中文论文全流程首选,ChatGPT-4o、Claude 3.7适合英文与深度逻辑,Kimi、Elicit专攻文献处理。没有绝对 “最好”,只有最适配…...

Volcano调度算法全解析:从DRF公平分配到Binpack节点装箱(含权重调优技巧)

Volcano调度算法深度实战:从DRF公平分配到Binpack节点装箱 在Kubernetes生态中,资源调度一直是决定集群效率和稳定性的核心环节。当你的业务从简单的Web服务扩展到AI训练、大数据处理等复杂场景时,原生Kubernetes调度器的局限性就会凸显——它…...

UnrealPakViewer实战指南:解决Pak文件解析难题的5个创新方法

UnrealPakViewer实战指南:解决Pak文件解析难题的5个创新方法 【免费下载链接】UnrealPakViewer 查看 UE4 Pak 文件的图形化工具,支持 UE4 pak/ucas 文件 项目地址: https://gitcode.com/gh_mirrors/un/UnrealPakViewer 当你面对10GB加密Pak包&…...

GoLang实战:5分钟搞定Langchaingo调用DeepSeek-R1大模型(附完整代码)

GoLang实战:5分钟搞定Langchaingo调用DeepSeek-R1大模型(附完整代码) 如果你是一位Go开发者,正需要在项目中快速集成大语言模型能力,却苦于时间有限、文档繁杂,那么这篇文章就是为你量身定制的。我们将用最…...

VMware12虚拟机安装Mac系统全攻略:从环境配置到网络共享一站式指南

1. VMware12虚拟机安装Mac系统前的准备 在Windows环境下运行Mac系统听起来像是天方夜谭,但借助VMware12虚拟机,这件事变得出奇简单。我去年为了测试iOS应用就走过这条路,整个过程踩过不少坑,也积累了不少经验。首先需要明确的是&a…...

3步搞定黑苹果:OpCore-Simplify自动化配置工具深度体验

3步搞定黑苹果:OpCore-Simplify自动化配置工具深度体验 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的黑苹果配置而头痛不已…...

三分钟掌握Android语音定制:tts-server-android让你的设备开口说话

三分钟掌握Android语音定制:tts-server-android让你的设备开口说话 【免费下载链接】tts-server-android 这是一个Android系统TTS应用,内置微软演示接口,可自定义HTTP请求,可导入其他本地TTS引擎,以及根据中文双引号的…...

5款强力资源获取工具深度评测:猫抓媒体解析技术如何重塑内容管理流程

5款强力资源获取工具深度评测:猫抓媒体解析技术如何重塑内容管理流程 【免费下载链接】cat-catch 猫抓 chrome资源嗅探扩展 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 在数字内容爆炸的时代,高效获取和管理网络媒体资源已成为…...

STM32F103C8T6实战:在最小系统板上运行轻量级TranslateGemma

STM32F103C8T6实战:在最小系统板上运行轻量级TranslateGemma 1. 引言 你有没有想过,在一块只有拇指大小的开发板上运行AI翻译模型?STM32F103C8T6最小系统板,这个通常用来控制LED灯、读取传感器的小家伙,现在居然能跑…...

DeepSeek辅助求解欧拉计划第940题

原题地址:https://pe-cn.github.io/940/一开始把题目上传,直接让他编写python程序,总是不对。试了Qwen也不行,Longcat稍好一点,S(3)能算出来,提到了封闭式,还提到了阿克曼函数。 最后我将A的递推…...

告别官方包!手把手教你从Gitee源码编译kkFileView v4.4.0(附Maven打包避坑点)

从源码到部署:深度解析kkFileView v4.4.0全流程编译实战 在企业级文档处理场景中,kkFileView作为一款开箱即用的文件预览解决方案,其源码编译能力往往被大多数开发者忽视。本文将打破常规安装包依赖,带你深入源码编译的全链路过程…...

GLM-4V-9B图文问答实战:识别截图中的代码错误并给出修复建议

GLM-4V-9B图文问答实战:识别截图中的代码错误并给出修复建议 1. 项目简介与核心价值 GLM-4V-9B是一个强大的多模态大模型,能够同时理解图像和文本信息。我们基于Streamlit构建了一个本地部署方案,让你可以在自己的电脑上轻松运行这个强大的…...

如何在浏览器中免安装使用微信?这个开源插件给你答案!

如何在浏览器中免安装使用微信?这个开源插件给你答案! 【免费下载链接】wechat-need-web 让微信网页版可用 / Allow the use of WeChat via webpage access 项目地址: https://gitcode.com/gh_mirrors/we/wechat-need-web 你是否曾经遇到过这样的…...

避坑指南:ESP32 ADC测量不准?7个常见错误与校准优化方案

ESP32 ADC精度优化实战:从硬件设计到软件校准的完整避坑手册 当你在ESP32项目中使用ADC读取传感器数据时,是否遇到过这些情况:明明输入电压稳定,读数却像心电图一样上下跳动?同一个电路在不同开发板上测出的数值相差甚…...

GJK碰撞检测算法:从原理到实战的5个核心技巧

GJK碰撞检测算法:从原理到实战的5个核心技巧 【免费下载链接】gjk.c Gilbert-Johnson-Keerthi (GJK) collision detection algorithm in 200 lines of clean plain C 项目地址: https://gitcode.com/gh_mirrors/gj/gjk.c GJK碰撞检测算法是游戏开发和物理引擎…...

保姆级教程:用星图AI平台训练PETRV2-BEV模型,新手也能玩转自动驾驶

保姆级教程:用星图AI平台训练PETRV2-BEV模型,新手也能玩转自动驾驶 1. 前言:为什么你需要这篇教程? 如果你对自动驾驶技术感兴趣,想亲手训练一个能“看懂”周围环境的AI模型,但又被复杂的代码、昂贵的硬件…...