KMP_Algorithm

//KMP Algorithm referenced to the book of data structure int KMP(int n, const char pri_str[], const char sub_str[]) { int i, j; int next[n];// store the String of sub_str's value of next assert(pri_str != null and sub_str != null); // assure both the two are not null exec_next(n, sub_str, next); i = 0; j = 0; while(i < pri_str.length and j < sub_str.length) { if( j == -1 or pri_str[i] == sub_str[j]) //** { i++; j++; } else { j = next[j]; } } if( j >= sub_str.length)// match success { return (i - sub_str.length); } else //match fail { return -1; } // the below algorithm is for the array of next[] void exec_next(int n, const char str[], int next[]) { int i, k; boolean matched;// next[0] = -1; next [1] = 1 ; // match for the above "//**" attention to the next[0] for(i = 2; i < n, i++) { matched = false; for(k = i; k >= 1; k--) { if(strcmp(substr(str, 0, k), substr(str, i-k, k)) == 0) { matched = true; break(); } } next[i] = matched ? (k+1) : 1; } }
• 0
点赞
• 0
收藏
• 打赏
• 1
评论
11-11 93
01-06 426
01-28 1181
03-22 150
05-22 507
09-19

“相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

stone1982

¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、C币套餐、付费专栏及课程。