题目链接:https://cn.vjudge.net/contest/281961#problem/D 题目大意:给你一个模式串,然后给你多个匹配串,匹配串的类型是包括可以覆盖的以及不可覆盖的。 具体思路:对于可以覆盖的字符串,我们就按照以前的方法来就行了,对于不可以覆盖的字符串,我们通过两个数组, ...
分类:
其他好文 时间:
2019-02-09 15:16:34
阅读次数:
185
初识KMP "例题传送门" KMP算法是一种改进的字符串匹配算法,时间复杂度为O(m+n)。 ? ——百度百科 KMP算法最重要的一个内容就是next数组,它让KMP算法从普通的字符串匹配算法的O(mn)优化到了O(n+m)。 next数组主要的功能就是让两个串匹配失败时,能够快速地找到下一个匹配的 ...
分类:
其他好文 时间:
2019-01-27 19:17:45
阅读次数:
200
假设我们面临这样一个问题:有一个文本串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
题目: 编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例: 示例 1: 示例 2: 思路: 先找出最小长度的,然后每个字符串匹配。O(n) ...
分类:
其他好文 时间:
2019-01-26 17:10:50
阅读次数:
205
一、什么是后缀数组: 字符串后缀Suffix 指的是从字符串的某个位置开始到其末尾的字符串子串。后缀数组 Suffix Array(sa) 指的是将某个字符串的所有后缀按字典序排序之后得到的数组,不过数组中不直接保存所有的后缀子串,只要记录后缀的起始下标就好了。 比如下面在下面这张图中,sa[8] ...
分类:
编程语言 时间:
2019-01-26 11:03:08
阅读次数:
247
给定只含 "I"(增大)或 "D"(减小)的字符串 S ,令 N = S.length。 返回 [0, 1, ..., N] 的任意排列 A 使得对于所有 i = 0, ..., N-1,都有: 如果 S[i] == "I",那么 A[i] < A[i+1] 如果 S[i] == "D",那么 A[ ...
分类:
其他好文 时间:
2019-01-24 14:35:45
阅读次数:
233
什么是KMP算法: KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt同时发现,因此人们称它为克努特——莫里斯——普拉特操作(简称KMP算法)。KMP算法的关键是利用匹配失败后的信息,尽量减少模式串与主串的匹配次数以达到快速匹配的目的。具体实现就是实 ...
分类:
编程语言 时间:
2019-01-24 01:17:15
阅读次数:
220
一、正则表达式在文本处理中的常用: 1.表达文本类型的特征(病毒、入侵等) 2.同时查找或替换一组字符串 3.匹配字符串的全部或部分(主要) 二、正则表达式的常用操作符 三、经典正则表达式实例 (([1-9]?\d|1\d{2}|2[0-4]\d|25[0-5]).){3} ([1-9]?\d|1\ ...
分类:
其他好文 时间:
2019-01-23 17:30:51
阅读次数:
173
Rabin-Karp Accepted 1711 904MS 5272K 1310 B G++ #include "bits/stdc++.h" using namespace std; typedef long long LL; const int MAXN = 1e6 + 5; const in ...
分类:
其他好文 时间:
2019-01-23 17:17:11
阅读次数:
197
以 grep 程序查找文本是相当方便的。在 POSIX 系统上,grep 可以在两种正则表达式风格中选择一种,或是执行最简单的字符串匹配。 传统上,有三种程序,可以用来查找整个文本文件: grep 最早的文本匹配程序,使用 POSIX定义的基本正则表达式。 egrep 扩展式 grep 。这个程序使 ...
分类:
其他好文 时间:
2019-01-23 00:18:39
阅读次数:
167