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; } }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值