首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

KMP算法有关问题

2012-04-11 
KMP算法问题C/C++ codevoid get_next(string T, int *next){int i, ji 1j 0next[1] 0while (i

KMP算法问题

C/C++ code
void get_next(string T, int *next){   int i, j;   i = 1;   j = 0;   next[1] = 0;   while (i < T[0]) //假设T[0]是字符串的长度,这里是T[0] = 6   {         if (j == 0 || T[i] == T[j])         {              ++i;              ++j;              next[i] = j;          }          else          {               j = next[j];           }    }}

假设String T = ababcx.
请详细解释上面的代码。我能看懂但就是不知道有什么意义。

[解决办法]

其实 这个函数功能,就是实现: 判断 模式串的规律。 比如i 指向 目标字符串, j指向模式字符串,两串逐一比较,若相等 则i ,j 都加1, 若不相等,则 i 保存不变, j 就应该回退,可是 回退多少呢, 就靠 这个函数来实现了。
[解决办法]
探讨
其实 这个函数功能,就是实现: 判断 模式串的规律。 比如i 指向 目标字符串, j指向模式字符串,两串逐一比较,若相等 则i ,j 都加1, 若不相等,则 i 保存不变, j 就应该回退,可是 回退多少呢, 就靠 这个函数来实现了。

热点排行