【代码随想录刷题总结】leetcode344-反转字符串
引言
大家好啊,我是前端拿破轮😁。
跟着卡哥学算法有一段时间了,通过代码随想录的学习,受益匪浅,首先向卡哥致敬🫡。
但是在学习过程中我也发现了一些问题,很多当时理解了并且AC的题目过一段时间就又忘记了,或者不能完美的写出来。根据费曼学习法,光有输入的知识掌握的是不够牢靠的,所以我决定按照代码随想录的顺序,输出自己的刷题总结和思考。同时,由于以前学习过程使用的是JavaScript,而在2025年的今天,TypeScript几乎成了必备项,所以本专题内容也将使用TypeScript,来巩固自己的TypeScript语言能力。
题目信息
反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
题目分析
本题名叫反转字符串,实际上是反转字符串数组。说到这里,有一点大家一定要明确,在JavaScript和TypeScript中,字符串是不可变的。一旦声明了一个字符串,就不能修改其内容,只能给他重新赋值一个字符串。
反转数组的话,直接调用Array.prototype.reverse()就能实现本题的目标。但是很显然本体不是考查对API的熟悉程度。那么就要求我们不要使用API,用自己的方式来实现对数组的反转。
那这个应该我们都很熟悉了,直接使用双指针,分别从首尾向中间靠拢,并交换首位指针所指的元素。
题解
1 | /** |
时间复杂度:$O(n)$
空间复杂度:$O(1)$
总结
对于本题,考查数组的reverse()方法的底层实现方式,使用双指针遍可以轻松解决。在交换的过程中,通常做法是定义一个temp变量来进行临时保存和交换,但是利用解构赋值的语法,可以不用定义temp,直接一步到位。
好了,这篇文章就到这里啦,如果对您有所帮助,欢迎点赞,收藏,分享👍👍👍。您的认可是我更新的最大动力。由于笔者水平有限,难免有疏漏不足之处,欢迎各位大佬评论区指正。
往期推荐✨✨✨
- 面试官:三数之和写的不错,来个四数之和吧。我:。。。🤪🤪🤪
- 😏😏😏不会吧,不会吧,你不会以为三数之和只是比两数之和多了一个数吧?
- 女朋友要和我分手?!!居然是因为交不出赎金信,不会用哈希表😭😭😭
- 🤡🤡🤡面试官:就你这还每天刷leetcode?连四数相加和四数之和都分不清!
- 不是吧不是吧,leetcode第一题我就做不出来?😭😭😭
- 🤯🤯🤯我人麻了!!!面试官:怎么判断链表是否有环?用两种不同的方法😏😏😏
- 🤡🤡🤡字母异位词是个啥?用哈希还是排序?
- CJS和ESM两种模块化标准的异同分析
- 🤔5202年了,你不会还不知道WebAssembly吧?
- 🚀🚀🚀实在受不了混乱的提交——我使用了commitlint和commitizen
- 当我用deepwiki来学习React源码
- 【🚀🚀🚀代码随想录刷题总结】leetcode707-设计链表
我是前端拿破轮,关注我,一起学习前端知识,我们下期见!



