用KMP算法查找字符串中字串位置
2015-01-22 21:35
363 查看
#include<stdio.h> //i(后缀) //j (前缀) void get_next(char* T,int *next) { int i = 1; int j = 0; next[1] = 0; while(i<T[0]) { if(j == 0|| T[i] == T[j]) { i++; j++; if(T[i] != T[j]) { next[i] = j; } else { next[i] = next[j]; } } else { //j回溯 j = next[j]; } } //前缀是固定的 ,后缀是相对的 } //返回子串T在S中的位置 //在S串第pos个元素之后的位置 int index_KMP(char * S,char* T,int pos) { int i = pos; int j = 1; int next[255]; get_next(T,next); while(i<=S[0]&&j<=T[0]) { if(j == 0||S[i] == T[j]) { i++; j++; } else { j = next[j]; } } if(j > T[0]) { return i - T[0]; } else { return 0; } } int main() { char str[255] = "abcdef";//第一个值忽略,记字符串长度 str[0] = 6; char T[255] = "ade";//第一个值忽略,集字符串长度 T[0] = 2; int num; num = index_KMP(str,T,1); printf("%d",num); return 0; }
相关文章推荐
- SQL在字符串中查找字串出现第N次的位置
- kmp算法 查找一个字符串在另一个字符串出现的位置
- 用gawk遍历目录查找字符串在文件中的位置
- sql查找某个字符串第N次出现的位置的函数(转帖)
- 使用boost查找区分大小写查找,查找一个字符串在另外一个字符串的位置,返回索引。
- C++之String的find方法,查找一个字符串在另一个字符串的什么位置;leveldb字符串转数字解析办法
- Bash字符串处理(与Java对照) - 19.查找字符的位置
- PHP - Manual手册 - CLXI. String 字符串处理函数 - strpos查找一个字符串第一次出现的位置
- sql server 拆分字符串&查找第n个分割符的位置
- sql查找某个字符串第N次出现的位置的函数(转帖)
- sql 2000中在查找某个字符串内容位置(不知道表名,字段名)
- SQL Server 中查找字符串在另一字符串中的索引位置问题
- 查找字符串出现的位置
- 从字符串的末尾算起查找出现位置 InStrRev
- 查找两个字符串的最小字串。(原创,闲着无事,检验下自己的水平,请大家给予评论)
- 字符串查找算法之(一)KMP算法
- 通过indexOf()查找某个字符串位置
- Python函数——查找字符串第n次出现的位置
- 查找一个字符串在另一个字符串中出现的所有位置
- SQL 如何查找某个字符串第N次出现的位置