剑指Offer字符串

本文探讨了字符串中变位词的检测方法,使用双指针和哈希表进行高效判断。同时讲解了如何找到不含重复字符的最长子字符串,以及包含所有字符的最短字符串。此外,还介绍了有效回文和最多删除一个字符得到回文的解决方案。通过这些案例,深入理解字符串操作和回文检测的核心算法。
摘要由CSDN通过智能技术生成

字符串中的变位词

思路: 用一个数组来记录字母出现的次数,当数组中都为0时,说明有变位词

左右两个指针相距s1的长度,同时向右移动,每次计算是否有变位词。

字符串中所有变位词

思路:同上

不含重复字符的最长子字符串

思路:首先考虑到双指针和哈希表,一前一后,当前指针向前移动一个时判断哈希表该字符是否重复,重复则后指针向前移动知道没有重复,同时记录此时的长度。

以上方法需多次遍历哈希表,为避免多次遍历,可以考虑设一个变量为0,当有重复值时将它设为1,没有时再变回0.

包含所有字符的最短字符串

思路:先把短字符串个数写入map(哈希表),设一个count记录map中字符个数,然后依旧双指针遍历长字符串,一前一后,先前指针移动,每次移动哈希表中存在的字符个数减1,如果该字符此时个数为0,count--,当count为0时,记录此时长度,后指针向前移动,如果此时的字符在map中存在,则把它的个数++,如果此时哈希表中该字符的个数为1,则count++。

有效的回文

思路:双指针i=0,j=s.length-1,向中间遍历,除了数字和字母都忽略掉,然后转换成小写后比较是否相等。

最多删除一个字符得到回文

思路:先双指针向中间遍历,如果遇到不相等的,退出循环,再判断忽略一个字符能否得到回文

回文字符串的个数

思路:首先应考虑到从中间向两端遍历,然后考虑到回文串为偶数和奇数的问题,因此先定中间位置为i和i,或者i和i+1,然后寻找以这为中心的回文串。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值