题目大意:给定长度为N的字符串,求出其中不相同子串的个数。
解题思路:每一个字串一定是某个后缀的前缀,那么原问题就可以等价于求所有后缀之间的不相同的前缀的个数。如果所有的后缀按照suffix(sa[1]),suffix(sa[2])……suffix(sa[n])的顺序计算,我们会发现对于每个新加进来的后缀suffix(sa[k]),它将产生n-sa[k]+1个新的前缀。但是其中有leight[k...
分类:
编程语言 时间:
2015-01-22 20:18:15
阅读次数:
276
输入一个字符串,判断是否含有相同的子串(字串长度大于1),是输出1,否,输出0。
例如12312含有两个12,所以输出1;23456则没有相同子序列,输出0.
输入:12312
输出:1
#include
#include
using namespace std;
int main(int argc, char *argv[])
{
string s;
cin>...
分类:
其他好文 时间:
2015-01-06 00:51:48
阅读次数:
198
输入两个字符串,找出在第一个字符串中,有多少个第二个子串,输出个数,并输出删除全部第二个子串后的字符串。
输入:abcdcde cd
输出:2 abe
#include
#include
using namespace std;
int delete_sub_str(const char *str,const char *sub_str,char *result)
{
...
分类:
其他好文 时间:
2015-01-06 00:50:31
阅读次数:
140
输入一个字符串,判断是否含有相同的子串(字串长度大于1),是输出1,否,输出0。
例如12312含有两个12,所以输出1;23456则没有相同子序列,输出0.
输入:12312
输出:1
#include
#include
using namespace std;
int main()
{
string s;
while(cin>>s){
int len=s.s...
分类:
其他好文 时间:
2015-01-04 10:07:14
阅读次数:
136
求不相同子串个数 该问题等价于求所有后缀间不相同前缀的个数..也就是对于每个后缀suffix(sa[i]),将贡献出n-sa[i]+1个,但同时,要减去那些重复的,即为height[i],故答案为n-sa[i]+1-height[i]的累计。const maxn=1419;var x,y,rank....
分类:
其他好文 时间:
2014-12-16 22:28:32
阅读次数:
310
总结了几天的后缀数组,终于完成了。不可重叠重复串;可重叠k次重复串; 不相同子串个数最长回文子串 连续重复子串重复次数最多的连续重复子串最长公共子串长度不小于k 的公共子串的个数不小于k 个字符串中的最长子串出现或反转后出现在每个字符串中的最长子串3个字符串,问其中公共子串分别为1,2,3...l的...
分类:
编程语言 时间:
2014-10-16 02:57:51
阅读次数:
309
题目链接
题意:给出长度为n的字符串,字符串由‘1’,‘0’,‘’组成,其中‘’可以任意替换为‘1’,‘0’,求不存在连续3个相同子串的字符串的最多个数。
思路:我们可以利用二进制的形式来表示字符串,进行DFS。利用位运算的左移来表示在‘*’位置上放置‘1’,注意在递归的过程中注意判断之否存在3个连续相同的子串。
代码:
#include
#include
#i...
分类:
其他好文 时间:
2014-08-18 16:29:12
阅读次数:
222
[问题描述]输入仅由0/1组成的长度为n的字符串,并且其中不可含有三个连续的相同子串。 输入:字符串的长度n(n0 do begin p:=x;q:=y;r:=z; while (rn then begin inc(tot,2); exit; end; a[L]:=0; if judge(L) th...
分类:
其他好文 时间:
2014-08-14 19:37:39
阅读次数:
171
4,获取两个字符串中最大相同子串。第一个动作:将短的那个串进行长度一次递减的子串打印。
"abcwerthelloyuiodef"
"cvhellobnm"
思路:
1,将短的那个子串按照长度递减的方式获取到。
2,将每获取到的子串去长串中判断是否包含,
如果包含,已经找到!...
分类:
其他好文 时间:
2014-07-14 18:33:21
阅读次数:
316