本章学习了两种算法,BF算法和KMP算法 BF算法就是暴力匹配,非常好理解 KMP算法的优点是,与BF算法相比,消除了回溯,大大提高了效率 缺点是,好难理解。。。 本章除了新学习了两种算法,我还看到了上学期所学的线性代数知识矩阵在编程上的应用(以前我总是不理解我一个计算机专业的学线性代数有什么用) ...
分类:
其他好文 时间:
2019-04-15 09:11:32
阅读次数:
154
串的模式匹配 一、BF算法 —— 暴力匹配 1、当前匹配,++i;++j; 2、当前不匹配,i=i-j+2;j=1; 二、KMP算法 首先是主串s 和模式串t 的比较,当前比较的是主串s的第i个和模式串的第j个,若s[i]==t[j]; 则++i; ++j; 这里i,j为位置,而非下标 当出现不匹配 ...
分类:
其他好文 时间:
2019-04-14 09:29:43
阅读次数:
102
KMP算法: 引言: KMP算法是一种改进的字符串匹配算法 字符串匹配:即寻找str_target在str_source中出现的位置 没有改进的字符串匹配:用暴力法进行搜索,枚举出所有的情况然后一一比较。缺点:耗费了很多时间,时间复杂度非常高。所以需要改进。 这里举一个暴力匹配的例子: 在"zabc ...
分类:
编程语言 时间:
2019-02-16 00:09:45
阅读次数:
267
主要介绍strings包中的 strings.go/search.go/replace.go string.go中主要介绍Index函数,该函数寻找s中第一次出现substr的位置,返回position或-1: 基本代码如下: 可以看到在substr较短的情况下使用了暴力匹配,否则使用rabin-k ...
分类:
其他好文 时间:
2019-02-12 21:45:00
阅读次数:
155
假设我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的位置,怎么查找呢? 如果用暴力匹配 的思路 ,并假设现在文本串S匹配到i位置,模式串P匹配到j位置,则有: ?如果当前字符匹配成功(即S[i]==P[j]) 如果S[5]和P[1]匹配成功,继续执行第一条 匹配失败;j=n ...
分类:
其他好文 时间:
2019-01-27 10:47:48
阅读次数:
181
众所周知$FFT$是一个功能多但是不开$O2$常数吓人的算法。 这里我来口胡一下$FFT$如何搞字符串匹配。 其实我第一次是字符暴力匹配$52$次,结果$T$了一下午。 后来上网找发现有个更好的算法。 如果有两个数判相等,我们可以相减,判断是否为$0$; 但是字符串匹配相当于多对数判相等,相减加和肯 ...
分类:
其他好文 时间:
2019-01-17 21:10:36
阅读次数:
245
P2463 [SDOI2008]Sandy的卡片 直接二分长度暴力匹配....... 跑的还挺快 (正解是后缀数组的样子) 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 voi ...
分类:
其他好文 时间:
2019-01-06 14:32:59
阅读次数:
200
KMP算法详细理解 从昨天开始看KMP算法到今天凌晨。。。。。 把一些知识点进行总结,其实KMP还是挺简单的(HHHHHH) 博客新地址: "https://miraitowa2.top/" 1:BF(暴力匹配)算法 假设现在我们面临这样一个问题:有一个文本串S,和一个模式串P,现在要查找P在S中的 ...
分类:
编程语言 时间:
2018-12-22 18:39:36
阅读次数:
175
单模式匹配算法,也就是一个字符串和另一个字符串进行匹配。 1. BF 算法 BF 算法中的 BF 是 Brute Force 的缩写,中文叫作暴力匹配算法,也加朴素匹配算法。从名字可以看出,这种方法很暴力,效率也不高,但是简单、好懂。 在要匹配的两个字符串中,一个称之为 主串 ,一个称之为 模式串 ...
分类:
其他好文 时间:
2018-12-05 20:28:27
阅读次数:
228
现在有两个字符串:$s1$和$s2$,现在要你输出$s2$在$s1$当中每一次出现的位置,你会怎么做? ...
分类:
编程语言 时间:
2018-10-29 20:11:13
阅读次数:
189