社区
C语言
帖子详情
请教一个有关字符串的算法问题
see22
2005-01-02 12:26:50
给定一个字符串,如何在上万个字符串中搜索出匹配的,
需要用C语言实现,有没有最优算法. 谢谢,祝大家新年快乐!!!
...全文
276
14
打赏
收藏
请教一个有关字符串的算法问题
给定一个字符串,如何在上万个字符串中搜索出匹配的, 需要用C语言实现,有没有最优算法. 谢谢,祝大家新年快乐!!!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
see22
2005-01-03
打赏
举报
回复
上万个字符串的存储方式是由我自己决定的,
需要的是最快的算法
hewittlee
2005-01-03
打赏
举报
回复
kmp!
fire_zyn
2005-01-03
打赏
举报
回复
我想KMP算法应该是很好的选择。
多数数据结构书上都有描述。
数学学得好,可以阅读《计算机程序设计艺术(卷3)》
bluewinwind
2005-01-03
打赏
举报
回复
顶一下,具体的算法和存储的初始状态有关,
Lethe_1
2005-01-03
打赏
举报
回复
你说的匹配是模式匹配么?
oo
2005-01-02
打赏
举报
回复
所谓最优算法,跟你的需求有关的:
看你时间和空间怎么平衡。
yjy1001
2005-01-02
打赏
举报
回复
mark下
sharkhuang
2005-01-02
打赏
举报
回复
关键看这成千上万个字符串怎么存储的。
xuelong_zl
2005-01-02
打赏
举报
回复
mark
avalonBBS
2005-01-02
打赏
举报
回复
KMP算法查找串S中含串P的个数count
#include <iostream>
#include <stdlib.h>
#include <vector>
using namespace std;
inline void NEXT(const string& T,vector<int>& next)
{
//按模式串生成vector,next(T.size())
next[0]=-1;
for(int i=1;i<T.size();i++ ){
int j=next[i-1];
while(T[i]!=T[j+1]&& j>=0 )
j=next[j] ; //递推计算
if(T[i]==T[j+1])next[i]=j+1;
else next[i]=0; //
}
}
inline string::size_type COUNT_KMP(const string& S,
const string& T)
{
//利用模式串T的next函数求T在主串S中的个数count的KMP算法
//其中T非空,
vector<int> next(T.size());
NEXT(T,next);
string::size_type index,count=0;
for(index=0;index<S.size();++index){
int pos=0;
string::size_type iter=index;
while(pos<T.size() && iter<S.size()){
if(S[iter]==T[pos]){
++iter;++pos;
}
else{
if(pos==0)++iter;
else pos=next[pos-1]+1;
}
}//while end
if(pos==T.size()&&(iter-index)==T.size())++count;
} //for end
return count;
}
int main(int argc, char *argv[])
{
string S="abaabcacabaabcacabaabcacabaabcacabaabcac";
string T="ab";
string::size_type count=COUNT_KMP(S,T);
cout<<count<<endl;
system("PAUSE");
return 0;
}
goodluckyxl
2005-01-02
打赏
举报
回复
我一直是使用复杂度为N的匹配方式
我自己没有想过更好的
str1 str2
依次往前匹配,在m长度处匹配失败str2+m开始再和str1比较
直到结束
nwpulipeng
2005-01-02
打赏
举报
回复
要自己动手写吗?KMP是什么算法呀?关注并混点分
fatalerror99
2005-01-02
打赏
举报
回复
算法和数据结构是密不可分的。
这和那上万个字符串的存储结构,是否排序以及搜索次数都有很大关系。
如果需要多次搜索的话,建议先对字符串进行排序,可以数量级倍提高搜索效率。
Army123
2005-01-02
打赏
举报
回复
有个KMP算法,很不错的!
一个
牛人提供的GIS源码(很好)
一个
牛人提供的GIS源码(很好 下面文字非本人所写,文件提到的下载的东西我全部放包里了。 最后的礼物:校园多媒体系统和校园WEBGIS系统 为什么说是最后的礼物,大概是因为我突然想这个blog不更新了。为什么呢?...
编码:KR
字符串
匹配,
一个
简单到领导都看得懂的
算法
01—KR
算法
话说回来,我们今天要说的这个
字符串
匹配
算法
比之前讲过的kmp,horspool,sunday简单的多的
字符串
匹配
算法
,我们知道暴力匹配是通过对两个
字符串
进行每
一个
位置字符对比来查找匹配的上的子
字符串
。...
Python 47个
字符串
方法
# Python 47个
字符串
方法## 课程介绍同学们是否总是要搜资料、查官网后,才知道怎么操作
字符串
?如果是,来学学本课程吧,本课程以讲解官网文档的方式,讲解 Python 47个
字符串
方法,涉及替换、删除、连接、查找、...
动态规划之KMP字符匹配
算法
KMP
算法
(Knuth-Morris-Pratt
算法
) 是⼀个著名的
字符串
匹配
算法
, 效率很⾼, 但是确实有点复杂。 先在开头约定, 本⽂⽤ pat 表⽰模式串, ⻓度为 M , txt 表⽰⽂本串,⻓度为 N 。 KMP
算法
是在 txt 中查找⼦...
java
字符串
排列组合_java
算法
问题
排列组合 给定一组
字符串
,产生所有可能的集合...
java新手 高手勿笑
请教
大神们 为何没有打印出所有可能的情况 需要改什么地方呢 能不能 在我的代码基础上改一下 一楼的虽然好 可是小弟愚笨 看不懂 拜托了 各位大神 悬赏升至130 小弟所有家当 展开
C语言
69,369
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章