Skip to content

Commit f2c0b80

Browse files
Pattern Searching algorithm
1 parent 53c7c48 commit f2c0b80

File tree

2 files changed

+62
-0
lines changed

2 files changed

+62
-0
lines changed

Pattern Searching Algo/brute force.py

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#brute force for pattern searching .Time complexity O(m*(n-m+1))
2+
def search(pat, str):
3+
m = len(pat)
4+
n = len(str)
5+
6+
for i in range(n-m+1):
7+
j=0
8+
9+
for j in range(0, m):
10+
if (str[i + j] != pat[j]):
11+
break
12+
13+
if (j == m-1):
14+
print("Pattern found at", i)
15+
16+
if __name__ == '__main__':
17+
str = "abcdabdadadcabdacabdac"
18+
pat = "abda"
19+
search(pat, str)
20+

Pattern Searching Algo/kmpalgo.py

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
#effective approach for pattern searching KMP(Knuth Morris Pratt) algorithm.Time complexity O(n)
2+
def search(out, pat):
3+
n=len(out)
4+
m=len(pat)
5+
#array for longest prefix suffix
6+
p=[0]*m
7+
compute(pat,m,p)
8+
q = 0
9+
i = 0
10+
while i < n:
11+
if pat[q]==out[i]:
12+
q=q+1
13+
i = i + 1
14+
else:
15+
if q != 0:
16+
q = p[q-1]
17+
else:
18+
i = i + 1
19+
if q == m:
20+
print ("pattern occurs at "+str(i-q))
21+
q = p[q-1]
22+
#function definition for preproscessing longest prefix suffix
23+
def compute(pat,m,p):
24+
25+
k=1
26+
l = 0
27+
while k < m:
28+
if pat[k] <= pat[l]:
29+
l = l + 1
30+
p[k] = l
31+
k = k + 1
32+
else:
33+
if l != 0:
34+
l = p[l-1]
35+
else:
36+
p[k] = 0
37+
k = k + 1
38+
39+
#to find pattern from string out
40+
out = 'abcacdbacdabdacaabcdba'
41+
pat = 'dba'
42+
search(out,pat)

0 commit comments

Comments
 (0)