news 2026/8/2 5:27:34

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【力扣】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. 在特定情况下,要有左右指针各移动一步的操作
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/1 18:04:52

Mermaid时序图完全指南

Mermaid时序图完全指南 前言&#xff1a;时序图在技术文档中的价值 在系统设计、接口文档和故障排查中&#xff0c;时序图&#xff08;Sequence Diagram&#xff09;是描述对象间交互过程的最佳可视化工具。与Mermaid其他图表相比&#xff0c;时序图特别擅长展示时间维度上的…

作者头像 李华
网站建设 2026/8/1 12:41:37

金仓数据库:从“兼容”到“超越”,部署、安全、性能三重跃迁

兼容是对企业历史投资的尊重是确保业务平稳过渡的基石然而这仅仅是故事的起点在数字化转型的深水区&#xff0c;企业对数据库的需求早已超越“语法兼容”的基础诉求。无论是核心业务系统的稳定运行&#xff0c;还是敏感数据的安全防护&#xff0c;亦或是复杂场景下的性能优化&a…

作者头像 李华
网站建设 2026/7/31 18:41:27

揭秘Docker Scout自动化测试集成:如何实现镜像漏洞秒级响应

第一章&#xff1a;揭秘Docker Scout自动化测试集成&#xff1a;如何实现镜像漏洞秒级响应Docker Scout 是 Docker 官方推出的镜像安全分析工具&#xff0c;能够在镜像构建和部署的每个阶段自动检测潜在的安全漏洞。通过与 CI/CD 流程深度集成&#xff0c;Scout 实现了从代码提…

作者头像 李华
网站建设 2026/7/31 10:03:47

深度解析:易知微数字孪生如何破解园区数字化转型深水区难题

在数字经济与国家战略双重驱动下&#xff0c;智慧园区已从概念落地走向规模化建设&#xff0c;成为推动区域经济高质量发展的核心载体。当前我国产业园区虽已实现基础信息化升级&#xff0c;但传统模式下的低效运营、系统孤立、管理粗放等问题仍未根治&#xff0c;叠加低碳转型…

作者头像 李华
网站建设 2026/8/2 5:24:58

运维系列数据库系列【仅供参考】:达梦数据库 使用ODBC创建DBLINK

达梦数据库 使用ODBC创建DBLINK 使用ODBC创建DBLINK 一、下载并安装unixODBC 二、配置ODBC 三、创建并测试DBLINK 使用ODBC创建DBLINK 一、下载并安装unixODBC 使用地址http://www.unixodbc.org/可下载unixODBC源码包,这里下载unixODBC-2.3.9版本。 下载完成后将包上传至源…

作者头像 李华