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

【力扣】917. 仅仅反转字母

解题思路

算法:双指针–左右指针
场景分类:对称操作类问题
思路:
左指针left指向字符串开头,右指针right指向字符串末尾

通过内层while循环,使得左指针left和右指针right指向的字符都是英文字母。随后交换两指针指向字符的位置

交换操作结束后,要让左右指针各移动一步,进而找下一组字母

最后,返回处理后的字符串


思考

1. 本题中双指针的作用?
本题要求将字符串中出现字母的位置反转

那么双指针的作用就是找到一组位置正好相反的字母

2. 为什么在交换操作完成后左右指针要各移动一步?
在交换操作完成后,左右指针指向的字符均是字母

下一步我们应该找到下一组位置相反的字母。但是现在左右指针已经指向了字母,如果不各移动一步,那么内层的两个while循环将永远不会工作。此时左右指针会一直停留在第一组字母的位置,一直进行交换操作。

这样就会导致左右指针无法找到下一组字母,反而陷入到了死循环,导致程序超时。

(当然,因为做该题时,距离上一次刷题过了好久时间,所以也有这个原因导致没有想到该问题)


代码

classSolution{public:boolisEnglish(charch){// 判断字符是否为英文字母if((ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))returntrue;returnfalse;}stringreverseOnlyLetters(string s){intleft=0,right=s.length()-1;// 左右指针while(left<right){// 让左右指针指向英文字母while(left<right&&!isEnglish(s[left]))left++;while(left<right&&!isEnglish(s[right]))right--;// 左右指针指向英文字母后,交换两字符swap(s[left],s[right]);// (第一次没想到,导致超时)// 左右指针各移动一步,找下一个英文字母left++;right--;}returns;}};

收获

  1. 体会该题双指针的作用
  2. 在特定情况下,要有左右指针各移动一步的操作
http://www.cnnetsun.cn/news/104778.html

相关文章:

  • Cirq代码补全进阶指南(函数提示使用全解析)
  • STM32 USB摄像头连接技术深度解析
  • 从开发到上线:多模态Agent Docker存储配置全流程(附最佳实践模板)
  • 【AI工程化落地必看】:多模态Agent Docker测试用例设计的8项军规
  • 第十九篇:多租户架构:数据隔离与资源配额
  • VLN-CE视觉语言导航实战:从零开始构建智能导航系统
  • 中国电力招标网:开启能源行业高质量发展的“金钥匙”
  • 京东外卖全国上线“自提”功能:线上点单,到店即走更省时
  • ITSS在中小企业中的应用策略:从轻量化落地到能力成长
  • 35岁不是程序员的终点,而是新起点:大龄程序员如何再次进入大厂?
  • BiliPlus进阶指南:解锁B站深度体验的全新方式
  • 37、Linux 网络服务管理全解析
  • 非晶磁芯:国产化“市占率”突围战背后的中国力量|深圳金鑫磁材
  • 荒原之梦考研数学:考研报名人数连续两年下降,还要考研吗?
  • 32、深入了解 Linux 系统安全防护
  • 3分钟学会李跳跳自定义规则:彻底告别手机弹窗的终极指南
  • 免费API合集:为您的项目打开无限可能
  • Vercel AI SDK与Docker集成避坑指南:那些官方文档不会告诉你的秘密
  • 为什么现在应届大学生都热衷从事IT互联网行业?
  • Vue + Element UI :从零开发号码标记查询系统
  • Minecraft Bedrock启动器终极配置指南:从新手到高手的完整解决方案
  • 前端数据安全保护方案:从水印技术到全方位防护体系
  • Docker MCP 网关插件开发指南(90%开发者忽略的核心原理)
  • FastReport开源版:快速构建.NET报表系统的完整指南
  • HeidiSQL数据库管理工具:从零开始的完整安装与使用指南
  • MATLAB与XFoil翼型分析:终极集成指南
  • EmotiVoice语音合成在新闻播报自动化中的效率提升
  • 浏览器原生Python编程革命:JupyterLite深度解析与应用指南
  • Vue Query Builder 终极指南:快速构建可视化查询界面
  • 从零构建高可用Agent服务:Docker备份恢复的7步黄金流程