1 原始的笨方法
思路:一个接一个的进行匹配
//时间复杂度:预处理时间(0) + 匹配时间 O((n-m+1)m) = O((n-m+1)m) 空间复杂度 O(n+m+5)
void NativeMatchStr( char *src,char *dest )
{
assert(src!=NULL&&dest!=NULL);
int len1,len2;
len1=strlen(src);
len2=strlen(dest);
for(int i=0;i<len1;i++)
{
for(int j=0;j<len2;j++)
{
if(src[i+j]!=dest[j]) // 1 比较
{
break; //只是推出 内层循环
}
if(j==len2-1) //2 判断
{
//i+len2-1=i+j : 两种情况--对应两个处理方式printf以及 return
printf("The location is %d--%d\n",i,i+j);
return;
}
}
}
printf("I cannot find the match.\n");
}
========================================================
测试代码:
int main()
{
char *str1="abcdefgh";
char *str2="def";
char *str3="disig";
NativeMatchStr(str1,str2);
NativeMatchStr(str1,str3);
return 0;
}
2 KMP算法
搞不太明白了,还是没有能够静下心来。以后再说吧,这里有两篇参考的可以看看
六之再续:KMP算法之总结篇(12.09修订,必懂KMP):http://blog.csdn.net/v_july_v/article/details/7041827
KMP算法详解:http://www.matrix67.com/blog/archives/115
KMP快速字符串查找算法:http://www.nowamagic.net/algorithm/algorithm_KmpFastStringSearch.php
嗨,不知道怎么搞的,随便修改了一下就标记为 已删除 的标志了,都整到垃圾箱了。看看这次能整好不,不会是每一次 修改和编辑都要删除吧???
字符串匹配
原创hahanihao101 博主文章分类:面试 ©著作权
©著作权归作者所有:来自51CTO博客作者hahanihao101的原创作品,请联系作者获取转载授权,否则将追究法律责任
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
字符串匹配sunday python 字符串匹配leetcode
问题简介:给定输入字符串和模式p,实现通配符模式匹配并支持规则’?’ 和’’注:1.’?’ 匹配任意一个字符2.’ * ’ 匹配任意一个字符串包括空字符串3.要两个字符串完全匹配而不是部分匹配
字符串匹配sunday python leetcode 字符串 字符串指针 迭代 -
python匹配指定字符串替换 python 字符串 匹配
正则表达式匹配某个文本模式,但是它找到的是模式的最长可能匹配(因为是贪婪匹配 )。 而你想修改它变成查找最短的可能匹配。
python匹配指定字符串替换 python 正则表达式 子串 正则 -
python打开字符串名字的文件 python 文档字符串
我们在使用def 关键字定义一个函数时,其后必须跟有函数名和包括形式参数的圆括号。函数体的下一行开始,必须是缩进的。函数体的第一行可以是字符串,这个字符串就是文档字符串(documentation string),通常也称作:docstring。 文档字符串的定义: 在函数体的第一行,我们可以使
python打开字符串名字的文件 python 文档字符串 documen 字符串 函数体 自动化工具