Skip to content

Commit 8b49743

Browse files
Merge pull request #746 from ask2sm/patch-17
kmpstringmatching.py
2 parents 0e9e2d5 + 703114d commit 8b49743

File tree

1 file changed

+39
-0
lines changed

1 file changed

+39
-0
lines changed

Strings/kmpstringmatching.py

+39
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
def KMPSearch(pat, txt):
2+
M = len(pat)
3+
N = len(txt)
4+
lps = [0]*M
5+
j = 0
6+
computeLPSArray(pat, M, lps)
7+
8+
i = 0
9+
while i < N:
10+
if pat[j] == txt[i]:
11+
i += 1
12+
j += 1
13+
14+
if j == M:
15+
print ("Found pattern at index " ,(i-j))
16+
j = lps[j-1]
17+
elif i < N and pat[j] != txt[i]:
18+
if j != 0:
19+
j = lps[j-1]
20+
else:
21+
i += 1
22+
def computeLPSArray(pat, M, lps):
23+
len = 0
24+
lps[0] =0
25+
i = 1
26+
while i < M:
27+
if pat[i]== pat[len]:
28+
len += 1
29+
lps[i] = len
30+
i += 1
31+
else:
32+
if len != 0:
33+
len = lps[len-1]
34+
else:
35+
lps[i] = 0
36+
i += 1
37+
txt = "ABABDABACDABABCABAB"
38+
pat = "ABABCABAB"
39+
KMPSearch(pat, txt)

0 commit comments

Comments
 (0)