本文实例讲述了Python字符串匹配算法KMP。分享给大家供大家参考。具体如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
#!/usr/bin/env python #encoding:utf8 def next (pattern): p_len = len (pattern) pos = [ - 1 ] * p_len j = - 1 for i in range ( 1 , p_len): while j > - 1 and pattern[j + 1 ] ! = pattern[i]: j = pos[j] if pattern[j + 1 ] = = pattern[i]: j = j + 1 pos[i] = j return pos def kmp(ss, pattern): pos = next (pattern) ss_len = len (ss) pattern_len = len (pattern) j = - 1 for i in range (ss_len): while j > - 1 and pattern[j + 1 ] ! = ss[i]: j = pos[j] if pattern[j + 1 ] = = ss[i]: j = j + 1 if j = = pattern_len - 1 : print 'matched @: %s' % str (i - pattern_len + 1 ) j = pos[j] kmp(u '上海自来水来自海上海' , u '上海' ) |
希望本文所述对大家的Python程序设计有所帮助。