字符串匹配之rabin_karp
来源:互联网 发布:c语言游戏开发教程 编辑:程序博客网 时间:2024/06/11 01:21
/*file:rk_alogrithm.cbrief:auther:yejingdata:2014.08.01ver:1(create the file 8/1)test pc:ubuntu 12.14*/#include <stdio.h>#include <stdlib.h> #include <string.h> void rabin_karp_alogrithm( char *src_string, char *tar_string) { if(!src_string || !tar_string)return;int i, j; int src_len = strlen(src_string); int tar_len = strlen(tar_string); int tar_matcher = 0; int src_matcher = 0;int prime_num = 11; int highest_bit = 1;int max_character_num = 255; for( i = 0; i < tar_len; ++i) { tar_matcher = ( max_character_num * tar_matcher + tar_string[i] ) % prime_num; src_matcher = ( max_character_num * src_matcher + src_string[i] ) % prime_num; } for( i = 0; i < tar_len - 1; ++i) highest_bit = (highest_bit * max_character_num) % prime_num; for( i = 0; i <= src_len - tar_len; ++i) { if( tar_matcher == src_matcher) { for(j = 0; j < tar_len; j++) if(src_string[i+j] != tar_string[j]) break; if(j == tar_len) printf("match index:%d \n", i); } if(i < src_len - tar_len) { src_matcher = ( max_character_num * ( src_matcher - src_string[i] * highest_bit ) + src_string[i + tar_len] ) % prime_num; //向前移动一个字符 if( src_matcher < 0 ) src_matcher += prime_num; } } } int main(int argc, char* argv[]) { char tar_string[] = "yejing"; char src_string[] = "yejinglxlyejinglxlyejinglxlyejinglxl"; rabin_karp_alogrithm(src_string, tar_string); return 1; }
0 0
- 字符串匹配之rabin_karp
- 字符串匹配方法——Rabin_Karp
- 字符串匹配(string matching)算法之一 (Naive and Rabin_Karp)
- 字符串匹配(string matching)算法之一 (Naive and Rabin_Karp)
- 字符串匹配之朴素字符串匹配算法
- 字符串匹配算法 之 朴素字符串匹配
- 字符串匹配之KMP
- 字符串匹配 之 KMP
- 字符串匹配之kmp
- 字符串匹配之DFA
- Rabin_Karp算法
- 字符串匹配之首尾匹配算法
- 字符串模式匹配之朴素匹配法
- 字符串匹配之BM算法
- 字符串匹配之Horspool算法
- 字符串匹配之BM算法
- 字符串匹配新秀之Sunday
- 字符串匹配之KMP算法
- Quartz 2D的坐标系和UIKit的坐标系对比以及相互转换
- Jsoup入门指南
- DuiLib中CTileLayoutUI的一个bug
- 【超级详细】使用java生成带干扰线颜色不一的验证码
- 黑马程序员_HashMap
- 字符串匹配之rabin_karp
- 是打渔还是晒网(计算从2000年1月1日到输入的那一天有多少天)
- smartupload实现上传下载
- 【控件】给地图添加一个简单的比例尺条
- P2P之UDP穿透NAT的原理与实现(附源代码)
- SharedPreferences用法笔记
- CoreText实现图文混排和点击事件
- VGA时序及其原理
- 复制linux虚拟机时网卡信息不正确的解决办法