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

【LeetCode】反转字符串

欢迎来到李耶的频道【LeetCode面试题】。


反转字符串

题目

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组char[]的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

输入:s = ["h","e","l","l","o"] 输出:["o","l","l","e","h"]
输入:s = ["H","a","n","n","a","h"] 输出:["h","a","n","n","a","H"]

解法一:双指针

思路:使用左右两个指针,分别指向数组的头和尾。交换两个指针指向的元素,然后左指针右移,右指针左移,直到两个指针相遇。这是最经典、最高效的原地反转解法。

functionreverseString(s){letleft=0;letright=s.length-1;while(left<right){[s[left],s[right]]=[s[right],s[left]];left++;right--;}returns;}
  • 时间复杂度 / 空间复杂度:O(n) / O(1)
  • 优势:最推荐,代码简洁,性能最优,面试中最稳妥的写法

解法二:递归

思路:将数组的第一个和最后一个交换,然后递归处理中间的子数组。

functionreverseString(s){functionhelper(left,right){if(left>=right)return;[s[left],s[right]]=[s[right],s[left]];helper(left+1,right-1);}helper(0,s.length-1);returns;}
  • 时间复杂度 / 空间复杂度:O(n) / O(n)
  • 优势:体现递归思想,但空间复杂度不满足 O(1) 要求,面试中不推荐

解法对比

解法时间 / 空间复杂度原地修改推荐指数
双指针O(n) / O(1)⭐⭐⭐⭐⭐
递归O(n) / O(n)⭐⭐⭐

扩展题

  1. 反转字符串 II:给定一个字符串s和一个整数k,从开头起每隔2k个字符,反转前k个字符。
  2. 反转字符串中的单词 III:给定一个字符串s,反转每个单词的字符顺序,同时保留空格和单词顺序。
  3. 反转单词前缀:给定字符串word和字符ch,找出ch第一次出现的下标i,反转从 0 到i的字符。

“世上无难事,只要肯登攀。” —— 毛泽东

关注李耶,每天一道面试题,一起卷起来 🔥

http://www.cnnetsun.cn/news/3075864.html

相关文章:

  • 京东开源实时视频视觉语言交互模型:全栈方案解析与落地实践
  • 智能体颠覆安全-360图龙锋如何用蜂群路线打造中国版Mythos
  • Java 26 发布了, 我人麻了。。
  • 玩三角洲要高配?2026年这5款旗舰游戏本让你杀穿新赛季
  • AI模型门控发布机制解析:原理、实践与行业应用
  • 2026全球EMBA客观测评:科学选型与优质项目解析
  • 工程师转型AI:从跑通Demo到收藏实战秘籍,拒绝高数劝退!
  • 微信聊天记录备份终极指南:如何安全保护你的数字记忆
  • UMDF驱动开发入门:二 详解INF文件与设备类选择
  • 软件测试——黑盒测试
  • AI Agent 三种记忆的工程落地
  • 网络安全事件报告——伪CAPTCHA诱骗用户运行危险的PowerShell脚本
  • 小白可懂的保姆级 Redis 教程
  • ponytail爆火:专治AI编程过度造轮子,代码直接砍半
  • 解密 MCP:开启 AI 与数据交互的新标准
  • 新课标下,小学数学最需要的能力不是“算得快“,而是“想得通“
  • 深入认识ClassLoader - 一次投产失败的复盘
  • DeepSeek美化-为 DeepSeek 网页版引入 Obsidian Border 主题视觉风格
  • RAG基础
  • 做智驾十年,为何Momenta上市换锚?
  • 企业DLP选型指南:从入门到决策,一篇讲透
  • PEAK框架:自然语言驱动的GPU内核优化技术解析
  • Lyra框架:RISC-V处理器验证的异构加速与语义生成技术
  • 郑州翻译公司 俄语保险翻译清单
  • 模板题这道模板题非常全面,相比应用李超线段树的时候实现的东西要多的多:
  • 基于STM32单片机的颜色识别 TCS3200 RGB 检测系统2(设计源文件+万字报告+讲解)(支持资料、图片参考_降重降ai)
  • X-diagnosis实战案例:解决生产环境中的10个典型系统故障
  • Spring MVC的工作流程
  • Go语言代码覆盖率实现一、什么是代码覆盖率
  • 2026年乐清高定全屋木作品牌深度评测:木艺空间定制馆凭何领跑?