1 . 首先解决昨天遗留问题:翻转字符串中的单词
2. 右旋字符串
3. KMP算法回顾
KMP算法就是为了快速的在文本串中找到给定的模式串。解决逐个问题的暴力解法就是分别遍历文本串和模式串,然后逐个判断字符是否相等,如果相等指针同时向后移动;如果遇到不相等元素,就从头开始遍历模式串。
而KMP算法就是通过计算next数组记录已经匹配的文本内容,当出现字符不匹配时,利用记录的信息避免从头再做匹配。
首先要计算next数组,leetcode”28.找出字符串中第一个匹配的下标“可以算是KMP算法的裸题
首先计算模式串needle的next数组,先回退在判断
主函数,先回退再判断
因为你的指针移动设置在循环条件中了,所以必须先回退在判断
4. 重复的字符串:这题就是KMP算法的应用,通过判断next数组数值规律判断字符串是否是由一个重复子串构成的
如果一个字符串是由子串重复构成的,那他的next数组第一个字串长度内的值都是0(ababab),从第二个子串的第一个字符开始到最后都是递增的,且字符串的长度是字串长度的整数倍
首先计算给定字符串的next数组
判断情况1next数组的最后一位肯定不是0且字符串长度是子串长度的整数倍