从伪代码创建python中字符串匹配的移位表

时间:2015-10-27 02:41:49

标签: python shift

我正在尝试从我的教科书中获取伪代码并将其转换为python函数。伪代码用于创建用于Horspool字符串匹配的移位表。

伪代码如下:

ShiftTable(P[0..m - 1]) 
//Takes input pattern P[0..m-1] and alphabet of possible characters
//Produces output Table[0..size-1] indexed by alphabet's characters and filled with shift sizes computed by formula
     for i = 0 to size - 1 do Table[i] = m
     for j = 0 to m - 2 do Table[P[j]] = m - 1 - j
     return Table

我的代码如下:

def BuildShiftTable(pattern):
     m = len(pattern)
     alphabet = [i for i in string.ascii_lowercase]
     print(alphabet)
     for i in alphabet:
         table[i] = alphabet[i]
     for j in m - 2:
         table[pattern[j]] = m-1-j
     return table

它显然不起作用,但我试图理解如何处理伪代码正在做什么并将其转换为工作代码,因为我不确定伪代码中的第一个for循环是什么表示如果尚未创建,则从表列表中取大小-1。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

我看到的问题是你说for j in m-2。 'm-2'是一个int,因为'm'是一个int;写for j in int没有多大意义。我想你打算写for j in range(0,m-2)