主串:S =
ababcabcacbab
子串:T =
abcac
[jack@jack-desktop: ch4]$./mapp4-1-2
S =
ababcabcacbab
T =
abcac
pos = 1
S[0]= 13
T[0]= 5
a b a b c a b c a c b a b
i=1
a b c a c
j=1
-------------------
S[1]=a,T[1]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=1
a
j=1
S[2]=b,T[2]=b
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=2
a b
j=2
S[3]=a,T[3]=c
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=3
a b c
j=3
S[2]=b,T[1]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=2
a
j=1
S[3]=a,T[1]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=3
a
j=1
S[4]=b,T[2]=b
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=4
a b
j=2
S[5]=c,T[3]=c
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=5
a b c
j=3
S[6]=a,T[4]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=6
a b c a
j=4
S[7]=b,T[5]=c
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=7
a b c a c
j=5
S[4]=b,T[1]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=4
a
j=1
S[5]=c,T[1]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=5
a
j=1
S[6]=a,T[1]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=6
a
j=1
S[7]=b,T[2]=b
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=7
a b
j=2
S[8]=c,T[3]=c
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=8
a b c
j=3
S[9]=a,T[4]=a
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=9
a b c a
j=4
S[10]=c,T[5]=c
1 2 3 4 5 6 7 8 9 10 11 12 13
a b a b c a b c a c b a b
i=10
a b c a c
j=5
j = 6, T[0]=5, i=11
Index return i = 6
i=7的时候,j=5 失配
此时 应该选择从 子串中选择
j=2 继续比较
按照 公式的说法:
i=7
j=5
k=2
k-1 = 1
i-1 = 6
i-k+1 = 7-2+1 = 6
p1 = s6 = a
j-k+1 = 5-2+1 = 4
j-1 = 4
p4 = s6 = a
p1 = p4 =a
s = 主串
p = 子串
当 j =1 的时候,s[i] 不等于 a, p[1] = a
k=0,
那么 i=i+1
当j=2的时候,s[i]不等于 b,s[i-1]=a, p[1]=a ,p[2] = b
那么 k=1
此时 s[i] 继续和 p[1] =a 比较,看s[i] 是否等于 p[1]
如果s[i] 不等于a
那么 i = i+1 ,j = 1
如果s[i] = a,
那么 i=i+1, j=j+1
继续比较
当 j=3 的时候 ,s[i]不等于a,
s[i-2] =a, s[i-1] = b,
k =1
s[i] 与p[1] = a
比较
当j4 的时候,s[i] 不等于a
s[i-3]=a,
s[i-2]=b,
s[i-1]=a
k=2
s[i] 与 p[2] =b,继续比较
c 前面的 ab a ab
其中的
前面ab 和 后面的ab 重合,
就不用继续比较了
到某个位置不匹配的时候,就观察 他前面的 字符串
开头是否与末尾的,有重合,有重合 就跳过