字符串part02(二)

1 . 首先解决昨天遗留问题:翻转字符串中的单词

2. 右旋字符串

3. KMP算法回顾

KMP算法就是为了快速的在文本串中找到给定的模式串。解决逐个问题的暴力解法就是分别遍历文本串和模式串,然后逐个判断字符是否相等,如果相等指针同时向后移动;如果遇到不相等元素,就从头开始遍历模式串。

而KMP算法就是通过计算next数组记录已经匹配的文本内容,当出现字符不匹配时,利用记录的信息避免从头再做匹配。

首先要计算next数组,leetcode”28.找出字符串中第一个匹配的下标“可以算是KMP算法的裸题

首先计算模式串needle的next数组,先回退在判断

主函数,先回退再判断

因为你的指针移动设置在循环条件中了,所以必须先回退在判断

4. 重复的字符串:这题就是KMP算法的应用,通过判断next数组数值规律判断字符串是否是由一个重复子串构成的

 

如果一个字符串是由子串重复构成的,那他的next数组第一个字串长度内的值都是0(ababab),从第二个子串的第一个字符开始到最后都是递增的,且字符串的长度是字串长度的整数倍

首先计算给定字符串的next数组

判断情况1next数组的最后一位肯定不是0且字符串长度是子串长度的整数倍


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值