引言 正则表达式(regular expression)描述了一种字符串匹配的模式,可以用来:(1)检查一个串中是否含有符合某个规则的子串,并且可以得到这个子串;(2)根据匹配规则对字符串进行灵活的替换操作。 正则表达式学习起来其实是很简单的,不多的几个较为抽象的概念也很容易理解。之所以很多人感觉正...
分类:
其他好文 时间:
2015-05-04 19:31:43
阅读次数:
131
当字符串匹配失败时,模式串的指针并没有指向0从头比较,而是指向了一个特定的位置,因为这个Next[j]指向的位置pos前长度为Next[pos]的子串,同模式串第j位前的长度为Next[j]的子串是相同的。
即S[0]~S[Next[j]]一定与S[len-1-Next[j]]~S[j-1]匹配。
1.既能做前缀又能做后缀的子串长度 ans[0] = len;
int id...
分类:
其他好文 时间:
2015-05-03 23:46:36
阅读次数:
169
问题分析
这道题目和之前的leetcode010:Regular Expression Matching 规则稍有不同,就是对于'*' 号这次代表的是匹配任意字符(包括空串),这样处理方式上完全改变,而且思路比较简单,先把通配符字符串组成部分分为两类:
******* ,连续的*,预处理的时候可以合并为一个*
abc?d?,字母或?组合,后面都简写为X
考虑到第二类必须匹配才有可能整个字符串匹配,所以分两种情况考虑就可以了。
通配符字符串只有******或者X
X*X*X或*X*X或者X*X*或者*X*这...
分类:
其他好文 时间:
2015-05-03 09:23:24
阅读次数:
137
使用java代码实现!
public class Matching {
public static void main(String[] args) {
BF();
}
public static void BF() {
String BF_S = "aaaabbbaab"; //主串
String BF_T = "aaab"; //模式串
int BFSLeng...
分类:
编程语言 时间:
2015-05-01 17:26:14
阅读次数:
172
题目链接:http://poj.org/problem?id=3167题意:模式串可以浮动的模式匹配问题给出模式串的相对大小,需要找出模式串匹配次数和位置。思路:统计比当前数小,和于当前数相等的,然后进行kmp。比如说模式串:1,4,4,2,3,1 而主串:5,6,2,10,10,7,3,2,9,那...
分类:
其他好文 时间:
2015-04-30 15:54:32
阅读次数:
167
1.前缀蛮力匹配算法(linux内核string.h)char* strstr(const char *s, const char *wanted) { const size_t len = strlen(wanted); if (len == 0) return (c...
分类:
编程语言 时间:
2015-04-30 12:08:00
阅读次数:
98
/*BF算法,即普通模式匹配算法,将字符串与标准模板进行一位一位匹配,
* 一旦失败,就将字符串第一个字符去掉,重新匹配*/
package pack;
import java.util.Scanner;public class Main { static int count = 0; //存放匹配的位数 public static void main(String[] args)...
分类:
编程语言 时间:
2015-04-29 10:03:24
阅读次数:
190
因为最近准备开始学习做一些小的Android项目练手,看上了系统级的三个应用,拨号盘,通讯录和短信,准备从最简单的拨号做起,但是因为这些应用中都不可避免的会有自动提示,我觉得设计到的就是字符串匹配问题,这里准备使用C语言来实现,将来通过JNI集成到应用当中。1.首先是朴素匹配,实际上就是穷举:用C语...
分类:
编程语言 时间:
2015-04-28 22:18:16
阅读次数:
192
DP应用:KMP字符串匹配算法,解决POJ 3461以及hihoCoder 1015
分类:
其他好文 时间:
2015-04-28 11:06:48
阅读次数:
168