随笔分类 -  字符串处理

摘要:0 引子 嗯,开始之前先介绍几个概念:目标串:也就是主串,待匹配的串。模式串:去匹配的串。子串:原串中的某一连续片段。前缀:原串前面连续部分组成。后缀:原串尾部连续部分组成其实,不用被这些术语搞晕,更不必记忆,转化为自己的东西,理解了就好。 抛个问题先:现在有两个字符串,其中一个是模式串abcabc 阅读全文
posted @ 2016-09-05 00:20 jasaiq 阅读(900) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2778题意:有m种DNA序列是有疾病的,问有多少种长度为n的DNA序列不包含任何一种有疾病的DNA序列。(仅含A,T,C,G四个字符)思路:Trie图的状态转移,用矩阵mat[i][j]来表示从结点i到j只走一步有几种走法,那么mat的... 阅读全文
posted @ 2015-06-24 21:54 jasaiq 阅读(169) 评论(0) 推荐(0)
摘要:题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3430题意:给你n个编码后的模式串,和m个编码后的主串,求原来主串中含有模式串的个数思路:首先要将模式串解码成未编码前来建立ac自动机,然后解码主串扫描统计即可。co... 阅读全文
posted @ 2015-06-24 16:44 jasaiq 阅读(273) 评论(0) 推荐(0)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3065题意:有n个模式串,一个主串,求每个模式串在主串中出现的次数思路:AC自动机水题,trie树中也要维护标号,再开一个num数组记录出现次数即可,扫描匹配时注意跳转fail指针和root节点。code... 阅读全文
posted @ 2015-06-18 09:00 jasaiq 阅读(174) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2896题意:给你n个模式串,m个主串,求出每个主串中出现的模式串的标号。思路:AC自动机水题,trie树中维护标号,m次扫描即可,注意点输出格式。code: 1 #include 2 #includ... 阅读全文
posted @ 2015-06-17 15:50 jasaiq 阅读(175) 评论(0) 推荐(0)
摘要:题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=2222题意:给你n个模式串,一个长为m的主串,问有多少个模式串在主串中出现了(模式串可能重复)思路:AC自动机水题,先根据这n个模式串建立trie树,再构造fail指针,最后扫描主串即可。code: 1... 阅读全文
posted @ 2015-06-17 15:43 jasaiq 阅读(185) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3630题意:给你多个字符串,如果其中任意两个字符串满足一个是另一个的前缀,那么输出NO,否则输出YES思路:简单的trie树应用,插入的过程中维护到当前节点是不是字符串这个布尔量即可,同时判断是否存在上述情况。code: 1 #incl... 阅读全文
posted @ 2015-06-08 11:35 jasaiq 阅读(328) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=1743题意:有N(1 2 const int MAXN = 20005; 3 int wa[MAXN], wb[MAXN], wv[MAXN], ws[MAXN]; 4 5 int cmp(int* r, int a, in... 阅读全文
posted @ 2015-05-08 16:42 jasaiq 阅读(920) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3376题意:给你n个字符串m1、m2、m3...mn 求S = mimj(1= 2 #include 3 #include 4 using namespace std; 5 typedef long long LL; 6 ... 阅读全文
posted @ 2015-05-08 15:02 jasaiq 阅读(1167) 评论(1) 推荐(1)
摘要:题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1251题意:给你多个字符串,求以某个字符串为前缀的字符串数量。思路:简单的trie数应用,在trie的数据结构中增加一个存储到当前节点字符串出现的次数,在插入的过程中维护即可。code: 1 #inclu... 阅读全文
posted @ 2015-05-06 21:49 jasaiq 阅读(235) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2752题意:给你一个字符串,求出所有前缀后缀(既是前缀又是后缀的子串)的长度思路:首先整个字符串肯定既是前缀又是后缀,为最大的前缀后缀。假设next[len] = k,也即:s[1,k] = s[len-k+1,len]此时s[1,k]... 阅读全文
posted @ 2015-04-30 15:02 jasaiq 阅读(496) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3167题意:模式串可以浮动的模式匹配问题给出模式串的相对大小,需要找出模式串匹配次数和位置。思路:统计比当前数小,和于当前数相等的,然后进行kmp。比如说模式串:1,4,4,2,3,1 而主串:5,6,2,10,10,7,3,2,9,那... 阅读全文
posted @ 2015-04-30 14:18 jasaiq 阅读(556) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3974题意:求一给定字符串最长回文子串的长度思路:直接套模板manacher算法code: 1 #include 2 #include 3 #include 4 using namespace std; 5 const int M... 阅读全文
posted @ 2015-04-28 14:28 jasaiq 阅读(270) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=2406题意:确定字符串最多是多少个相同的字串重复连接而成的思路:关键是找到字符串的最小循环节code: 1 #include 2 #include 3 const int MAXN = 1000005; 4 char s[MAXN]... 阅读全文
posted @ 2015-04-27 16:49 jasaiq 阅读(395) 评论(0) 推荐(0)
摘要:题目链接:http://poj.org/problem?id=3461题意:给你两个字符串word和text,求出word在text中出现的次数思路:kmp算法的简单应用,遍历一遍text字符串即可,当前匹配的字符数达到word字符串的长度,即可确定word字符串出现一次了。code: 1 #inc... 阅读全文
posted @ 2015-04-27 15:51 jasaiq 阅读(348) 评论(0) 推荐(0)