![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
—————字符串处理—————
Alex_McAvoy
想要成为渔夫的猎手
展开
-
字符串处理 —— 回文串相关
【回文串】回文串,就是一个正读与反读都一样的字符串,比如:abcdcba、zxccxz 等常见的回文串算法有:求字符串中最长回文串、判断一个字符串是否为回文串、在字符中添加/删除一个字符后是否为回文串等回文串的判断:点击这里 添加/删除字符后是否为回文串:点击这里 求最长回文子串:点击这里 Manacher 算法(O(n) 求最长回文子串):点击这里【例题】Palindr...原创 2019-02-03 13:08:55 · 568 阅读 · 0 评论 -
字符串处理 —— 概述
【概述】在 ACM 中,常用的字符串算法不多,主要有:模拟与暴力、KMP、manacher、字典树、AC 自动机、Hash 等等。除算法外,C++ 封装好的 string 类也十分重要,其有大量的内置函数,可以对字符串进行灵活的处理。【算法】模拟与暴力:点击这里 回文串相关:点击这里 最大最小表示法:点击这里 字典树(Tire):点击这里 单模式匹配(KMP):点击这里 ...原创 2019-03-25 19:01:45 · 874 阅读 · 0 评论 -
字符串处理 —— 最大最小表示法
【概述】最大最小表示法用于解决字符串的同构问题,其在复杂度为 O(n) 的时间内求出一个字符串的所有同构串中字典序最大(小)的串的起始位置。应用:给出 n 个循环字符串判断有多少不同字符串:逐个用最大(小)表示法表示,然后加入 set 去重 循环字符串所有同构串中字典序最大(小)的表示:用最大(小)表示法求出起始位置,输出即可 判断两个字符串是否同构:将两字符串用最大(小)表示法表...转载 2019-02-27 19:05:16 · 855 阅读 · 0 评论 -
字符串处理——字典树
【概述】字典树,又称为单词查找树,Tire 树,是一种树形结构,它是哈希树的变种。字典树与字典很相似,当要查一个单词是不是在字典树中,首先看单词的第一个字母是不是在字典的第一层,如果不在,说明字典树里没有该单词,如果在就在该字母的孩子节点里找是不是有单词的第二个字母,没有说明没有该单词,有的话用同样的方法继续查找,以此类推。基本性质:字典树用边表示字符 有相同前缀的单词共用前...转载 2019-02-19 18:31:57 · 725 阅读 · 1 评论 -
字符串处理 —— 单模式匹配
【问题形式】文本(Text):长度为 n 的数组 T[1..n] 模式(Pattern):一个长度为 m 且 m≤n 的数组 P[1..m] 有效位移/匹配点(Valid Shift):0≤s≤n-m,且 T[s+1..s+m] = P[1..m],即对 1≤j≤m,有 T[s+j] = P[j],则模式 P 在文本 T 中出现且有效位移为 s,且称 s 是匹配点单模式匹配问题,就是给出...原创 2019-02-25 20:26:57 · 644 阅读 · 0 评论 -
字符串处理 —— AC 自动机
【概述】KMP 算法用于解决长文本的单模板匹配问题,字典树用于解决单个单词(短文本)多模板匹配问题,而 AC 自动机用于解决的是长文本的多模板匹配问题,其是以 trie 树的结构为基础,结合 KMP 的思想建立的。长文本的多模式匹配就是给出多个模式串 P1,P2,P3...,Pm,求出所有这些模式串在连续文本 T1....n 中的所有可能出现的位置、出现的个数、出现的单词等等。例如:给...转载 2019-03-06 13:43:17 · 679 阅读 · 0 评论 -
字符串处理 —— 模拟与暴力
【概述】在某些题目中,需要对字符串进行处理,不需要很复杂的算法,只需要按照题意进行模拟或暴力枚举即可得出答案。【例题】1.简单模拟Minimum Ternary String(CF-1009B):点击这里 Delete from the Left(CF-1005B):点击这里 Alphabetic Removals(CF-999C):点击这里 潜伏者(洛谷-P1071):点击...原创 2019-03-12 15:04:01 · 692 阅读 · 0 评论