字符串有关算法
该栏记录了Manacher,KMP,字符串自动机等有关内容和例题。重点放在回文串上面
Korloa
程序猿 走竞赛 拼实力 站在巨人的肩膀上
展开
-
KMP算法详解与实现(C++)
引子对于用户输入的一个关键词,要在茫茫的信息中检索列举出与之匹配的信息,提高匹配效率和时间无疑是个重点。我们把问题简化。对于一个串S,判断串T是否为它的子串。若是,则返回匹配成功的首位置若不是,输出-1方案一:(纯暴力)#include<iostream>#include<cstring>char key[100];char s[100];int lens,lenk;using namespace std;int main(){ cin&g原创 2022-07-02 23:53:33 · 340 阅读 · 0 评论 -
回文数(Noip1999)题解
文数(Noip1999)时间限制: 1000 ms 内存限制: 65536 KB提交数: 13507 通过数: 5503【题目描述】若一个数(首位不为零)从左向右读与从右向左读都是一样,我们就将其称之为回文数。例如:给定一个 10进制数 56,将 56加 65(即把56从右向左读),得到 121是一个回文数。又如,对于10进制数87,STEP1: 87+78= 165 STEP2: 165+561= 726STEP3: 726+627=1353 STEP4:......原创 2022-07-02 23:49:34 · 862 阅读 · 0 评论 -
KMP算法代码
KMP的算法的历史不过多讲解,直接干最难的部分先上代码1.求next数组的代码:(伪代码)int next[1000]; //nextvoid Get_next(char s[]){//s 为模串 next[0]=-1; int i=0; int j=-1; while(s[i]!='\0'){ if(j==-1 || s[i]==s[j]){ /*在这里,j==-1时,为什么也满足呢,因为当j==-1时,进入if主体,i++,j++;也就把next数组的值变原创 2021-10-19 09:55:34 · 463 阅读 · 0 评论