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

LeetCode--151.反转字符串中的单词(字符串/双指针法)

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" 解释:如果两个单词间有多余的空格,反转后的字符串需要将单词间的空格减少到仅有一个。

提示:

  • 1 <= s.length <= 104
  • s包含英文大小写字母、数字和空格' '
  • s至少存在一个单词

**进阶:**如果字符串在你使用的编程语言中是一种可变数据类型,请尝试使用O(1)额外空间复杂度的原地解法。

解题思路

1、移除字符串中多余的空格,并重建字符串

2、反转字符串

3、反转字符串中的单词

代码

classSolution{publicstaticchar[]removeSpace(Strings){// 使用字符数组char[]array=s.toCharArray();// 用快慢指针移除空格// 慢指针用于写数据intslow=0;// 快指针用于读数据for(intfast=0;fast<array.length;fast++){// 如果读到不是空格再写if(array[fast]!=' '){if(slow!=0){// 为该单词前加上空格array[slow++]=' ';}//写完一个单词while(fast<array.length&&array[fast]!=' '){array[slow++]=array[fast++];}}}// resize数组大小为slow大小char[]newArray=newchar[slow];for(inti=0;i<slow;i++){newArray[i]=array[i];}returnnewArray;}publicstaticchar[]reverseCharArray(char[]s,intstart,intend){// 反转字符串数组intleft=start;intright=end-1;while(left<right){s[left]^=s[right];s[right]^=s[left];s[left++]^=s[right--];}returns;}publicstaticStringreverseWordInCharArray(char[]s){// 反转每个单词intstart=0;for(inti=0;i<=s.length;i++){// 反转条件判断if(i==s.length||s[i]==' '){intend=i;s=reverseCharArray(s,start,end);start=i+1;}}returnnewString(s);}publicStringreverseWords(Strings){// 移除字符串中多余的空格char[]sArray=removeSpace(s);// 反转字符串数组sArray=reverseCharArray(sArray,0,sArray.length);// 反转单词s=reverseWordInCharArray(sArray);returns;}}
http://www.cnnetsun.cn/news/1759495.html

相关文章:

  • 医疗信息化实战:打造全院统一标签打印平台的完整解决方案
  • Cellpose-SAM:革新生物医学图像分析的智能细胞分割解决方案
  • WindowsCleaner深度解析:三步解决C盘爆红难题,让你的Windows系统重获新生
  • Kubernetes External Secrets安全指南:命名空间注解与访问控制最佳实践
  • 基于卷积神经网络与Qwen3.5-4B的多模态理解效果对比展示
  • 超星Chaoxing多线程并发处理:高效完成多个课程任务的终极方案
  • 三步掌握微信数据管理:PyWxDump终极指南与合规启示
  • SEUThesis:东南大学学术论文写作的格式革命与效率提升指南
  • 百度网盘Mac版下载加速:告别龟速下载的实用方案
  • 车窗升降背后的通信秘密:拆解LIN总线在车身控制中的实战调度表
  • Outlook中没有发起Teams会议选项怎么办?一篇文章教你快速恢复
  • VisDrone2019数据集标注转换实战:从TXT到VOC格式的完整指南
  • 智能流分发:OBS多平台推流插件如何实现低资源高效直播
  • MRI脉冲序列实战指南:从SE到FLASH的7种临床常用配置详解
  • Bitwarden Web Vault:终极密码管理平台完全指南
  • 高效定位学术论文开源代码的五大实用技巧
  • 直播内容转瞬即逝?这款工具让精彩永驻
  • Z-Image-Turbo-辉夜巫女部署案例:GPU算力优化下的低显存高效文生图方案
  • Windows 11系统优化神器:Win11Debloat让你的电脑重获新生
  • granite-4.0-h-350m部署案例:Ollama构建外贸行业多语种邮件自动生成工具
  • 微信聊天记录全掌控:PyWxDump本地化备份与深度管理指南
  • 别再手动算RSEI了!用GEE+Python脚本自动化处理Landsat8/9数据,5分钟出图
  • GraphRAG 2.0.0实战:用阿里云API为你的本地文档库(如PDF/TXT)构建智能问答机器人
  • CyberpunkSaveEditor:精准解决赛博朋克2077存档修改难题的全能方案
  • Claude辅助设计提示词:提升Kandinsky-5.0-I2V-Lite-5s视频生成创意性
  • 终极指南:如何用FontCenter彻底解决AutoCAD字体缺失问题
  • ​Problem - 2149F - Codeforces​
  • 开源工具BaiduNetdiskPlugin-macOS:突破百度网盘下载速度限制的完整解决方案
  • 保姆级教程:用QGC地面站为Pixhawk6c mini刷写PX4 V1.13.3固件并完成DJI F450全配置
  • 如何通过参考文献追溯经典论文?—— 反向查找