KMP样例程序
来源:互联网 发布:知世头像 编辑:程序博客网 时间:2024/05/22 07:46
#include <stdio.h>#include <stdlib.h>#include <string.h>#define N 100void cal_next( char * str, int * next, int len ){int i, j;next[0] = -1;for( i = 1; i < len; i++ ){j = next[ i - 1 ];while( str[ j + 1 ] != str[ i ] && ( j >= 0 ) ) //12131212---12131211j = next[ j ];if( str[ i ] == str[ j + 1 ] )next[ i ] = j + 1;elsenext[ i ] = -1;}}int KMP( char * str, int slen, char * ptr, int plen, int * next ){int s_i = 0, p_i = 0;while( s_i < slen && p_i < plen ){if( str[ s_i ] == ptr[ p_i ] ){s_i++;p_i++;}else{if( p_i == 0 )s_i++;elsep_i = next[ p_i - 1 ] + 1;}}return ( p_i == plen ) ? ( s_i - plen ) : -1;}int main(){char str[ N ] = {0};char ptr[ N ] = {0};int slen, plen;int next[ N ];while( scanf( "%s%s", str, ptr ) ){slen = strlen( str );plen = strlen( ptr );cal_next( ptr, next, plen );printf( "%d\n", KMP( str, slen, ptr, plen, next ) );}return 0;}
阅读全文
0 0
- KMP样例程序
- PlotToDevice样例程序
- Ogre样例程序解析
- 130822PLSQL 样例程序
- jedis使用样例程序
- hi35xx样例程序使用
- 完整神经网络样例程序
- Pktgen CLI样例程序
- Java Socket 样例程序(客户端)
- Z-Stack 样例程序分析1
- 【作业解答】第一次上机样例程序
- TensorFlow最佳实践样例程序
- TensorFlow最佳实践样例程序
- cuda学习第一步:样例程序
- 80、tensorflow最佳实践样例程序
- CPLEX 新手使用样例程序
- BlackBerry Push样例程序分析(一)什么是ECL 样例程序,其来源,意义
- 单例程序
- oracle_second
- 资深影迷不可不知的宽高比:Aspect Ratio 电影画面比例
- Loadrunner11脚本 录制时脚本出现 0event问题
- 汉字转拼音或转拼音首字母
- es6新方法替换for循环迭代需求
- KMP样例程序
- C#对角变换求行列式值
- Duplicate entry '**' for key 'all_inde
- windows下python判断脚本唯一运行改进
- 为什么使用 SLF4J 而不是 Log4J 来做 Java 日志
- 微信小程序开发(十)小程序支付-查询退款
- linux常用指令
- input框focus时的美化效果
- Python2和Python3的区别