摘要: 题目:给定一个字符串,求最长重复子串,这两个子串不能重叠。例如,str = "acdcdcdcd",则不可重叠的最长子串为"cdcd"。 思路:二分枚举+height数组分组。这道题的思想很巧妙,后面要仔细推敲。先二分答案,把题目变成判定性问题:判断是否存在两个长度为k的子串是相同的,且不重叠。解决 阅读全文
posted @ 2019-01-27 22:17 |旧市拾荒| 阅读(2359) 评论(0) 推荐(0) 编辑
摘要: 题目:求最长重复子串长度(可重复或者可交叉),例如 str = "abcbcbcbc",则最长重复子串为 "bcbcbc",最长重复子串长度为6。 思路:这道题用暴力解法的话不太现实,就算能实现效率也比较低。那这里用到的就是后缀数组+高度数组就能解决问题,这里有个规律:任何的子串都是某一个后缀数组的 阅读全文
posted @ 2019-01-27 17:44 |旧市拾荒| 阅读(920) 评论(0) 推荐(0) 编辑
摘要: 题目大意:求字符串的前缀是否为周期串,若是,打印出循环节的长度以及循环次数。 这道题考察的是KMP算法中next数组的应用,必须理解透next[]数组代表的含义才t能通过它解决这道题。思路是先构造出 next[] 数组,下标为 i,定义一个变量 t = i - next[i] 就是next数组下标和 阅读全文
posted @ 2019-01-27 00:51 |旧市拾荒| 阅读(185) 评论(0) 推荐(0) 编辑