字符串算法
文章平均质量分 80
哈希、KMP、Tire、AC自动机......
zaiyang遇见
我走过山的时候,山不说话;
我路过海的时候,海不说话。
相遇还是不相遇,都是献给岁月的序曲 !
展开
-
hiho字符串(双指针)
题目链接:https://vjudge.net/contest/396205#problem/Ihttps://ac.nowcoder.com/acm/contest/7509/A如果一个字符串恰好包含2个’h’、1个’i’和1个’o’,我们就称这个字符串是hiho字符串。例如"oihateher"、"hugeinputhugeoutput"都是hiho字符串。现在给定一个只包含小写字母的字符串S,小Hi想知道S的所有子串中,最短的hiho字符串是哪个。Input字符串S对于80%的数据,S原创 2020-09-26 10:02:33 · 235 阅读 · 0 评论 -
怕pny的牛牛(双指针)
题目链接:https://ac.nowcoder.com/acm/contest/9556/B题目描述:牛牛非常怕他的女朋友,怕到了走火入魔的程度,以至于每当他看到一个字符串同时含有n,p,y三个字母他都害怕的不行。现在有一个长度为m的只包含小写字母‘a’-‘z’的字符串x,牛牛想知道能令他不害怕的最长子串的长度是多少。(对于字符串”abc”来说,”c”,”ab”都是原串的子串,但”ac”不是原串子串)输入:"abcdefghijklmn"输出:14说明:因为所有子串都不同时含有n,p,y原创 2020-12-22 19:24:50 · 124 阅读 · 0 评论 -
字符串的读入方式
【代码】字符串的读入方式。原创 2022-12-09 14:59:13 · 1815 阅读 · 0 评论 -
LibreOJ 子串查找(哈希算法--字符串哈希解析)
题目链接:https://loj.ac/problem/103哈希算法:哈希算法是通过一个哈希函数H,将一种数据(包括字符串,较大的数等)转化为能够用的变量表示或是直接就可以作为数组下标的数字符串哈希:解决匹配串在主串出现的位置或次数问题。关键是计算字符串的哈希值。计算字符串的哈希值:滚动哈希技巧选取两个合适的互质常数b和h(b<h),假设字符串C=c1c2…cm,那么我们定义哈...原创 2019-10-08 21:51:21 · 410 阅读 · 0 评论 -
LibreOJ The XOR Largest Pair(字典树+异或+贪心)
题目链接:https://loj.ac/problem/10050分析:把每一个整数看作长度为32的二进制01串(最低二进制位为叶节点)。贪心思想:在求一个数字Ai与另一个数字Aj最大异或值时,我们要尽量让它们对应数位上的数字不同,即0对1,1对0。对于1<=i<=N,我们把A1~Ai-1对应的32位二进制串插入一颗Trie树。综上所述,我们可以循环i=1~N次,对于每个...原创 2019-10-11 21:40:48 · 123 阅读 · 1 评论 -
LibreOJ Radio Transmission(利用kmp求循环节)
题目链接:https://loj.ac/problem/10045分析:求一个最小的循环节,这个循环节能构成的字符串T,使给定的字符串能从T中找到。对于kmp的next数组,len-next[len]一定是字符串的循环节。证明如下:文本串为Tnext[n]为上图蓝色的部分(即整个T前后缀相等的最大长度)将next[n]和T从开头对齐,黄色部分为n-next[n]接着:黄...原创 2019-11-02 16:33:40 · 138 阅读 · 0 评论 -
最长回文---Manacher算法解析(俗称:马拉车算法)
题目链接:https://cn.vjudge.net/contest/320014#problem/E举例:两个字符串:122122 和bob对于字符串,长度分奇偶性,对于长度为偶数的,中心点不止一个,所以我们要把字符串全部转化为奇数求解。字符串每一位都加一位’#’,这样就可以把字符串全部转化为奇数 原字符串:122122 和bob现字符串#1#2#2#1#2#2# 和#b#o#b#...原创 2019-08-16 08:44:43 · 231 阅读 · 0 评论 -
LibreOJ #10034 图书管理(字符串哈希+哈希表--哈希表解析)
题目链接:https://loj.ac/problem/10034哈希表的知识:哈希表是一种高效的数据结构。例如,我们要存储和使用下面的线性表:A(1,75,324,43,1353,91,40)。分析这个线性表的元素类型和范围,开一个一维数组A[1,…1353]。使得A[key]=key,即线性表的key这个元素存储在A[key]中。但是这样造成了空间的浪费,加以优化:设计一个哈希...原创 2019-10-19 17:41:46 · 248 阅读 · 0 评论 -
LibreOJ #10035 Power Strings(kmp的实质性问题 或 字符串哈希 或 模拟)
题目链接:https://loj.ac/problem/10035分析:对于kmp的next数组:对于某个位置可以回溯到哪个位置,即前缀和后缀相同的最大长度。对于最后一个位置的next[len],是对于整个字符串而言的,len-next[len]即为后缀的长度。若字符串都是由这个后缀构成的,那么这个长度一定能被len整除。若不能整除,即字符串是由1个字串(即本身)构成。代码:#in...原创 2019-10-19 19:06:01 · 118 阅读 · 0 评论 -
HDU - 1251 统计难题(Trie字典树,map容器的应用)
题目链接:https://vjudge.net/contest/341616#problem/B分析:对于该开始输入的一个字符串集合,我们需要考虑每一个字符串它的前缀例如第一个字符串banana,它的前缀可以表示为b ba ban bana banan banana关键是如何利用字典树把这些前缀信息表示出来。我们知道在Trie树中,额外信息保存在结点中,利用好book数组是关键。对于...原创 2019-11-11 20:18:19 · 167 阅读 · 0 评论 -
POJ - 2752 Seek the Name, Seek the Fame(对kmp中next数组的理解或hash)
题目链接:https://vjudge.net/contest/350796#problem/BDescriptionThe little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to their newly-...原创 2020-02-13 10:33:08 · 169 阅读 · 0 评论 -
HDU - 1867 A + B for you again(kmp的实质性问题)
题目链接:https://cn.vjudge.net/contest/320541#problem/D翻译:合并字符串,两串a,b,a的后缀和b的前缀最大匹配长度为d,b的后缀和a的前缀的最大匹配长度为e,哪个长度大,就消去相同部分,衔接,否则按字母顺序衔接。分析:kmp就是找原串中是否含有模拟串,随着字符的一个个往后挪,最后能得出模拟串的前缀和原串的后缀是否有相同的部分。用kmp能找到最...原创 2019-08-19 10:41:04 · 119 阅读 · 0 评论 -
HDU - 2087 剪花布条(kmp的细节问题)
题目链接:https://vjudge.net/contest/320541#problem/ESample Inputabcde a3aaaaaa aa#Sample Output03翻译:找出原串中有多少个模拟串,没有输出0,有的话,保证不是重叠的,即用过以后不能再用,输出有多少个。分析:kmp是专门解决这类问题的,但是单单kmp,这时 aaaaaa aa这组数据...原创 2019-08-18 10:37:32 · 165 阅读 · 0 评论 -
POJ 3461 Oulipo(kmp算法解析)
题目链接:https://cn.vjudge.net/contest/320014#problem/FSample Input3BAPCBAPCAZAAZAZAZAVERDIAVERDXIVYERDIANSample Output130翻译:每组数据两行字符串(原串和模拟串),求原串中有多少个模拟串?KMP算法:对于两个串,ps:BABABABCBABABABB和...原创 2019-08-17 10:47:41 · 225 阅读 · 0 评论 -
HDU - 1247 Hat’s Words(Trie字典树+对一个字符串的分开处理)
题目链接:https://vjudge.net/contest/224755#problem/A翻译:给定一组字符串,对于某一个字符串,将它按任意长度分为两部分,如果这两部分都在给定的字符串中,并且原字符串也在给定的字符串中,那么输出这个字符串。例如输出的ahat字符串,将它分为a hat这两部分这两部分都在输入的字符串中,所以可以输出。分析:利用Trie字典树将字符串输入到树中,关键是...原创 2019-11-05 19:42:22 · 143 阅读 · 0 评论 -
CodeForces - 827A String Reconstruction(赋过值的位置如何跳过去的问题)
题目链接:https://cn.vjudge.net/contest/325616#problem/DInput3a 4 1 3 5 7ab 2 1 5ca 1 4Outputabacaba翻译:构造出来一个最小字典序的字符串,使得其满足n个条件。这n个条件中每个条件有一个连续的子字符串。然后有Ki个位子,表示这些字符串出现的位子。保证有解,n个条件互相没有矛盾分析:对于...原创 2019-09-14 15:13:31 · 395 阅读 · 0 评论 -
Libre OJ #10049(Trie字典树解析)
题目链接:https://loj.ac/problem/10049Trie字典树知识点:操作实现:初始化:一棵树空Trie仅包含一个根节点,该点的字符指针均指向空。插入:当需要插入一个字符串S时,我们令一个指针P起初指向根节点。然后,依次扫描S中的每个字符c。查询:当需要查询一个字符串S在Trie中是否存在时,我们令一个指针起初指向根节点,然后依次扫描S中的每个字符c。特点:字...原创 2019-10-11 11:04:35 · 208 阅读 · 0 评论 -
POJ 3080 Blue Jeans (思维+kmp)
题目链接:https://vjudge.net/contest/350796#problem/CDescriptionThe Genographic Project is a research partnership between IBM and The National Geographic Society that is analyzing DNA from hundreds of th...原创 2020-02-13 16:02:44 · 341 阅读 · 0 评论