【完虐算法系列】「字符串-逆序」复盘总结


大家好!

今天分享字符串中的逆序问题!

这一块也是字符串中比较简单的内容。

然后后面两节会是字符串中比较硬核的内容,分别是字符串中的动态规划问题和 KMP 算法。

今天先来说逆序!

说在前面

言归正传,这一期来说说字符串的第四块内容 「字符串 - 逆序」

github:https://github.com/xiaozhutec/share_leetcode

文档地址:https://github.com/xiaozhutec/share_leetcode/tree/master/docs

整体架构:

字符串 - 逆序

今天这期内容是字符串的第四期。

逆序这个逻辑很简单哈,就是在有限的时间范围内把字符串倒置:

比如:“Hannah” 逆序后为 “hannaH”

一般是要在时间复杂度为 O(N),空间额外复杂度为 O(1)

字符串「逆序」方面的问题(还拿字符串 “Hannah” 逆序后为 “hannaH” 为例)

一般的思路是:

设两个指针 left 和 right 分别指向字符串最左边和最右边,然后指针指向的字符不断交换,直到 left 不小于 right。

下图为例,left 指向字符串最左边,right 指向字符串最右边,进行不断的交换。

再往后,会发现 left < right 的条件不满足,退出执行。

而此时,字符串已经全部逆序了。

时间复杂度方面,由于是线性执行,所以是 O(N);

额外空间复杂度方面,仅仅是在交换的时候会借助一个字符的空间进行交换。所以额外空间复杂度是 O(1)。

大概的思路基本就是这样,下面用两个常见的案例来感受这种类型题目的具体解决方法。

案例

整体关于字符串「逆序」方面的问题是很简单的,只要稍加注意一点中间的细节即可!

下面会通过两个案例进行举例,分别是 LeetCode 的 344 题LeetCode 的 541 题

344.反转字符串【简单】

541.反转字符串【简单】

344.反转字符串【简单】

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

输入:s = ["h","e","l","l","o"]
输出:[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值