程序源代码:点击打开链接
1.引入
字符串模式匹配。首先我们引入目标串,模式串的概念,而字符串模式匹配就是查找模式串在目标串中的位置。2.brute-Force算法
brute-Force算法,我的理解是这样的。首先设目标串target="t0t1t2t3t4",pattern="p0p1p2"。将p0与t0比较,若相同,则继续比较p1与t1。若不同,则从t1与p0开始比较。下面我们举个例子:
target="aababcd",pattern="abcd";用target[i],pattern[j]分别表示target与pattern对应位置的字符(i,j初始为0)。
首先target[i]的a与pattern[j]的a相同,于是i++,j++。此时target[i]的a与pattern[j]的b不同,于是i=i-j+1,j=0。比较target[i]的a与pattern[j]的a相同,于是i++,j++。此时target[i]的b与pattern[j]的b相同,于是i++,j++。此时target[i]的a与pattern[j]的c不相同,于是i=i-j+1,j=0。此时target[i]的b与pattern[j]的a不相同,于是i++,j=0。此时target[i]的a与pattern[j]的a相同,于是i++,j++。此时,target[i]的b与pattern[j]的b相同,于是i++,j++。此时target[i]的c与pattern[j]的c相同,于是i++,j++。此时target[i]的d与pattern的d相同,于是i++,j++。测试j=pattern.length=4,表示在目标串target中找到了模式串pattern,于是返回模式串在目标串中的位置3。
下面是Brute-Force算法描述:
设目标串中的字符为ti(0<=i<n),模式串中的字符为pj(0<=0<m,m<=n),将他们比较:
(1)若ti=pj,继续比较ti+1与pj+1,直到j=m,则“ti-m+1……ti”与“p0……pm-1”匹配成功,返回模式串在目标串中匹配子串序号i-m+1。
(2)若ti!=pj,表示“t