时间复杂度为m+n,的一种模式匹配,适合子串不是很长的匹配
子串长度应该小于 (int类型表示最大值)/256
//自己想出来的模式匹配算法,记得在蓝桥杯比赛中用过,方法应该早就存在了,我也不知道叫什么#include<stdio.h>
#include<string.h>
#include<malloc.h>int KMP_ADD(char * s ,char * t ,int pos) ;//返回pos之后的子串t在主串s中第一次出现的位置,不存在返回-1int main (){int i ;i = KMP_ADD("1234123","123" ,0);printf("%d" , i) ;return 0;
}int KMP_ADD(char * s ,char * t ,int pos){int s_l = strlen(s) ;int t_l = strlen (t) ;// printf("%d %d \n",s_l,t_l);int i , j , t_sum,s_sum ;char *sc ;sc = (char*)malloc ((t_l+1)*sizeof(char)) ;if (sc == NULL)return -1 ;if (s_l-pos < t_l)return -1;for( i =0 ,t_sum = 0; i<t_l ; i ++){t_sum+=t[i] ;}for (i=pos,s_sum=0 ; i<s_l ; i++){s_sum+=s[i] ;if (i>=pos+t_l-1){if (s_sum == t_sum){strcpy(sc,&s[i-t_l+1]);sc[t_l] = '\0';if (!strcmp(sc,t)){free(sc);return i-t_l+1;}else{s_sum -= s[i-t_l+1];}}else{s_sum -= s[i-t_l+1];}}}free(sc);return -1;
}
时间复杂度为m+n,的一种模式匹配,适合子串不是很长的匹配相关推荐
- a - 数据结构实验之串一:kmp简单应用_串的两种模式匹配方式(BF/KMP算法)
串的两种模式匹配方式(BF/KMP算法) 前言 串,又称作字符串,它是由0个或者多个字符所组成的有限序列,串同样可以采用顺序存储和链式存储两种方式进行存储,在主串中查找定位子串问题(模式匹配)是串中最 ...
- POJ 1200 Crazy Search 查找有多少种不同的子串(hash)
文章目录 1.采用map解题 2.采用hash查找 题目链接: http://poj.org/problem?id=1200 题目大意:给定子串长度,字符中不同字符数量,以及一个字符串,求不同的子串数 ...
- 一种解决启动进程传递参数过长的方法
工作中,QA同学在测试我们程序的时候,发现在XP下,我们的A进程无法启动我们的B进程.而在Win7 64bit系统下功能正常.RD同学调试后,发现我们A进程中使用ShellExcute去启动了B进程( ...
- Java与Python:哪一种最适合您? [信息图]
通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控. 参加AppDynamics APM导览! 在软件开发中,很少有问题比选择编程语言更具分裂性或部落性. 软件开发人员经常以自己选择的工具 ...
- python3ide手机端怎么样_各大Python IDE的优缺点,看看哪种最适合你?
写 Python 代码最好的方式莫过于使用集成开发环境(IDE)了.它们不仅能使你的工作更加简单.更具逻辑性,还能够提升编程体验和效率. 每个人都知道这一点.而问题在于,如何从众多选项中选择最好的 P ...
- bs后端开发语言_哪种编程语言适合后端开发?Java和PHP的区别在哪?
从技术上看在web开发上,Java和PHP哪个更好呢? 一位从多年PHP开发转Java的技术人员说,应是各有千秋,各有各的好处,这是非常实际的答案. java已经是一门很成熟的语言,曾经看到一篇文章, ...
- 13种老人不适合带孩子_让老人带娃却遭怒摔!细数13种不适合带孩子的老人!...
让老人带娃却遭怒摔!细数13种不适合带孩子的老人! 一位妈妈说了自家老人带娃的事,让人捏了一把冷汗! 宝宝满月后,婆婆脾气越来越大,没有带过一天宝宝. 相处过程中,婆婆看一会,就让宝宝从很高的床上摔下 ...
- 内向的孩子学医好还是学计算机好,什么性格适合学医 哪种人不适合学医
适合学医的人有哪些呢,那种人适合学医呢哪种人不适合学医呢,下面小编为大家分析适合学医的人以及不适合学医的有哪种人,仅供大家参考. 适合学医的性格是什么 性格对职业确实有很大影响,性格内向的人作业务就不 ...
- 4种最适合零基础入门的编程语言排行榜
如果你想学习编程,虽然选择第一门编程语言与你想用它来做什么最终达到什么目的有很大的关系,但是事实上某些编程语言的确比其他语言要好学. 选择一门合适的编程语言作为入门的语言对于培养自己编程的兴趣会有很大 ...
最新文章
- Cisco产品线一览
- python使用方法-Python的使用方法
- iptables 智能限速方案
- 求两条轨迹间的hausdorff距离_自动控制原理 | 根轨迹法
- AUTOSAR从入门到精通100讲(二十三)-AUTOSAR通信篇—PduR模块
- 简答题c语言文件操作顺序,计算机基础与程序设计2012年4月真题试题(02275)
- 论文浅尝 | 利用机器翻译和多任务学习进行复杂的知识图谱问答
- java马克思手稿_java 循环嵌套解决一元,二元,三元方程(增长率,鸡兔同笼,马克思手稿)...
- Kafka 与Spark的集成
- 只要听说过电脑的人都能看懂的网上pdf全书获取项目
- cat6 万兆_千兆网线和万兆网线有什么区别?
- 动手深度学习PyTorch(三)模型选择、欠拟合和过拟合
- selenium使用谷歌浏览器
- 计算机中人民币符号在哪儿,人民币符号电脑怎么打(如何在文档中输入人民币符号)...
- selenium源码通读·4 |webdriver/common分析
- 作为菜鸟的我,努力学编程就对了——初来乍到篇
- 如何绘制业务流程图(一)
- vue-cli使用ESLint记录
- 重庆广播电视大学c 语言设计课程平时作业,大学语文课程作业及答案2
- hadoop3源码编译
热门文章
- Python菜鸟之python入门
- 分享几个大数据相关岗位的职责和面试问题
- JAMA子刊:20来岁就要控制体重!分析超8万中国人数据发现,成年到中年体重每多增加10斤,老了之后死亡风险增加10%...
- java 线程 free_Java进阶05 多线程
- mysql共享锁使用方法_浅谈Mysql共享锁、排他锁、悲观锁、乐观锁及其使用场景...
- 14产品经理要懂的-人性的目的性
- CAN总线技术 | 数据链路层04 - CAN节点状态与错误处理机制
- RTX5 | 配置文件RTX_Config.h(二)
- matlab中evrnd函数_【matlab】Matlab中产生正态分布随机数的函数normrnd
- ios(safar/微信)返回不执行js