c语⾔字符串内容匹配,C语⾔字符串匹配函数C语⾔字符串匹配函数,保存有需要时可以⽤:
#include
#include
#include
#include
#include
/*
pattern:
pos:
*/
static int badShift[];
static int goodPostfixLastPos(const char *pattern,int pos)
{
#define _break(flag) if(flag){ break;}
int flag = ;
int len = strlen(pattern);
int postFix_len = len - pos;
int postFix_position = pos;
int initStart = pos - postFix_len;
int last_start = ;
while(postFix_len)
{
last_start = (postFix_position == pos) ?initStart:;
int postFix_start = postFix_position;
for(;last_start>= && postFix_start
{
isalpha 函数flag = (pattern[last_start] == pattern[postFix_start]);
_break(!flag);
}
_break(flag);
if(initStart >= )
{
initStart--;
}
else
{
postFix_position++;
postFix_len--;
}
}
return flag?last_start-:-;
}
static int *calc_goodPostfixShift(const char *pattern,int *goodShift) {
int len = strlen(pattern);
for(int i=;i
{
goodShift[i] = len - goodPostfixLastPos(pattern,i) - ;
}
return goodShift;
}
static int *clac_badcharShift(const char *ptrn)
{
int i;
int pLen = strlen(ptrn);
for(i = ; i < ; i++)
{
*(badShift+i) = pLen;
}
while(pLen != )
{
*(badShift+(unsigned char)*ptrn++) = --pLen;
}
return badShift;
}
int BMSearch(const char *str,const char *pattern)
{
int goodShift[strlen(pattern)];
int len1 = strlen(str);
int len2 = strlen(pattern);
clac_badcharShift(pattern);
calc_goodPostfixShift(pattern,goodShift);
for(int i=len2 - ;i
{
int start = i;
int pos_pattern = len2 - ;
for(;pos_pattern>=;pos_pattern--,start--)
{
if(str[start] != pattern[pos_pattern])
{
break;
}
}
if(pos_pattern < )
{
return start + ;
}
if(pos_pattern == (len2 - ))
{
i += badShift[str[start]];
}
else
{
i += goodShift[pos_pattern + ];
}
}
return -;
}
【C+&plus;实现python字符串函数库】⼆:字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数⽤于匹配字符串的开头或末尾,判断是否包含另⼀个字符串,它们返回bool值.startswith() ...
python实现 字符串匹配函数
通配符是 shell 命令中的重要功能,? 表⽰匹配任意 1 个字符,*表⽰匹配 0 个或多个字符.请使⽤你熟悉的编程语⾔实现⼀个字符串匹配函数,⽀持 ? 和 * 通配符.如 "a?cd*d ...
c语⾔字符处理函数常见使⽤集合
1.最近看⼀些开源项⽬代码时,总会看到 c 语⾔中⼀些  "str" 开头的处理字符串的⽤法,有的之前没⽤到过,特此记录,随时看到随时添加. 这⾥不提出源码,只是⼀些使⽤说明加例⼦ ...
php -- strstr(&rpar;字符串匹配函数(备忘)
总结C语⾔字符检测函数:isalnum、
前⾔:最近⼀直在刷leetcode的题,⽤到isalnum函数,⽤man⼿册查了⼀下,总共有13个相关函数如下: #include int isalnum(int c ...
C语⾔-字符操作函数
1字符数组的初始化: 1.1 char string={'c','h','i','n','a'} 1.2char string={"china"}或者去掉{}即char strin ...
Python中字符串匹配函数startswith(&rpar;函数
1.函数⽤途含义 Python startswith() ⽅法⽤于检查字符串是否是以指定⼦字符串开头,如果是则返回 True,否则返回 False.如果参数 beg 和 end 指定值,则在指定范围内 ...
函数:MySQL中字符串匹配函数LOCATE和POSITION使⽤⽅法
1. ⽤法⼀ LOCATE(substr,str) POSITION(substr IN str) 函数返回⼦串substr在字符串str中第⼀次出现的位置.如果⼦串substr在str中不存在,返回 ...
C语⾔字符串匹配、goto语句、关机命令使⽤
随机推荐
在 .NET 中开发基于 Chrome 内核的浏览器-创建⼀个简单浏览器
Linux 基础命令
man      帮助命令  命令 --help  命令的简单帮助 help      命令的帮助(bash的内置命令) mkdir    创建⽬录  如makdir /data mkdir  ...
topcoder SRM 628 DIV2 BracketExpressions
先⽤dfs搜索所有的情况,然后判断每种情况是不是括号匹配 #include #include #include # ...
解决SharePoint⽂档库⽂件在搜索结果页⾯显⽰的标题和⽂档的标题不⼀致问题(search result)
问题表现: SharePoint 2013 爬⽹后,搜索⼀个⽂档,虽然搜到了,但是显⽰有点问题,如图: 原因分析: 造成该问题的原因是,该⽂档除了本⾝有⼀个名称外,在⽂档metadata的title属 ...
mybatis-spring
现成的中⽂⽂档 ⾸先,项⽬依赖 batis.spring.boot
SpringMVC深⼊探究(1)——DispatcherServlet与初始化主线
在上⼀篇⽂章中,我们给出了构成SpringMVC应⽤程序的三要素以及三要素的设计过程.让我们来归纳⼀下整个设计过程中的⼀些要点: SpringMVC将Http处理流程抽象为⼀个⼜⼀个处理单元 Spri ...
第⼆百⼆⼗⼋天 how can I 坚持
hibernate 还有好多不会搞啊,本来很简单的东西,没⽤过就不会. 今天... 只是感觉很累,昨天爬⼭爬
的,不知道该写点啥了,买的⽻绒服到了,还⾏吧,凑合穿吧. 睡觉了.今天貌似⼜发脾⽓了.哎.. ...
JavaScript状态模式及状态机模型
这是⼀篇,我⾃⼰都看不完的⽂章... ⽂章⼤体就两部分: 状态模式的介绍 状态机模型的函数库javascript-state-machine的⽤法和源码解析场景及问题背景: 我们平时开发时本质上就是 ...
⾼级OPENGL, 利⽤uniform块接⼝
1.到需要的uniform块的索引, 将程序对象的该uniform块索引绑定uniform 缓冲对象的绑定点
2.建⽴uniform缓冲对象,对象绑定
GL_UNIFORM_BUFFER缓冲⽬标,为缓 ...
什么时候删除指针后,要给指针赋NULL
删除后需要赋NULL: 1.当在⼀个类⾥的时候,删除类的某个成员对象,需要给它赋NULL,以防其他地⽅使⽤这个成员的时候,不知道这个成员是否存在 eg: ref1::ref1() { tPint = ...

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。