题目: 问题描述:如果一个字符串包含两个相邻的重复子串,则称它为容易的串,其他串称为困难的串。如:BB,ABCDACABCAB,ABCDABCD都是容易的,A,AB,ABA,D,DC,ABDAB,CBABCBA都是困难的。 输入正整数L,n,输出由前L个字符(大写英文字母)组成的,字典序第n小的困难 ...
分类:
其他好文 时间:
2019-02-02 12:59:01
阅读次数:
184
题目:给定一个字符串,求最长重复子串,这两个子串不能重叠。例如,str = "acdcdcdcd",则不可重叠的最长子串为"cdcd"。 思路:二分枚举+height数组分组。这道题的思想很巧妙,后面要仔细推敲。先二分答案,把题目变成判定性问题:判断是否存在两个长度为k的子串是相同的,且不重叠。解决 ...
分类:
其他好文 时间:
2019-01-28 00:52:20
阅读次数:
146
题目:求最长重复子串长度(可重复或者可交叉),例如 str = "abcbcbcbc",则最长重复子串为 "bcbcbc",最长重复子串长度为6。 思路:这道题用暴力解法的话不太现实,就算能实现效率也比较低。那这里用到的就是后缀数组+高度数组就能解决问题,这里有个规律:任何的子串都是某一个后缀数组的 ...
分类:
其他好文 时间:
2019-01-27 21:58:43
阅读次数:
227
核心:每一个后缀的每一个前缀都是一个子串 相邻后缀的lcp的值是就是重复子串的个数 用所有的子串减去sigma(height)就行了 ...
分类:
编程语言 时间:
2019-01-17 17:45:32
阅读次数:
211
Description 题意:有 N(1 =x$的连续区间内, 且首字母位置相距$ x$ 最后的原数组重复子串的长度为 $ans + 1$ Code cpp include include include define rd read() using namespace std; const int ...
分类:
编程语言 时间:
2018-12-04 15:40:07
阅读次数:
199
1)最长不重复子串 使用string和vector<string> 2)字符串的全排列 3)判断字符串A是否是字符串B的子串(字符串模式匹配)- 简单算法(BF) KMP字符串模式匹配算法是在一个字符串中定位另一个串的高效算法,时间复杂度为O(m+n)。简单匹配算法的时间复杂度为O(m*n)。 4) ...
分类:
编程语言 时间:
2018-11-27 22:13:09
阅读次数:
295
传送门:https://hihocoder.com/contest/hiho121/problem/1 题意 最长可重叠重复K次子串问题 思路 二分答案,转化成判定问题。 看看能不能找出不重叠的重复子串。对于每一组,我们检查这些后缀对应的sa值(也就是后缀起点在原串中的位置i)。如果max{sa} ...
分类:
编程语言 时间:
2018-10-16 22:10:40
阅读次数:
206
传送门: "后缀数组一·重复旋律2" 题意 最长可重叠重复子串问题 思路 二分答案,转化成判定问题。 看看能不能找出不重叠的重复子串。对于每一组,我们检查这些后缀对应的sa值(也就是后缀起点在原串中的位置i)。如果max{sa} min{sa} = k,那么就说明我们能找出一组不重叠的重复子串 AC ...
分类:
编程语言 时间:
2018-10-16 22:09:18
阅读次数:
200
1、最长的重复子串 寻找一个字符串中最长的重复子串 最大后缀方法思路: 1. 用字符串指针数组保存用户输入的字符串的所有后缀字符串; 2. 将后缀字符串集合进行排序; 3. 比较相邻字符串的公共子串长度,找到长度最大值,保存相应字符串即为所求 空间复杂度:求长度为n的字符串的后缀,需要O(n)的空间 ...
分类:
其他好文 时间:
2018-08-27 12:46:32
阅读次数:
165
这题和SPOJ - REPEATS 一样 代码改一下就好了 这个题是求这个重复子串,还得保证字典序最小 巧妙运用sa 看这个 https://blog.csdn.net/queuelovestack/article/details/53035903 很清晰 ...
分类:
其他好文 时间:
2018-08-19 19:58:17
阅读次数:
138