解析网页(KMP算法实现部分)
用kmp算法实现在一个网页内网址的提取,整个项目在这点击打开链接。只要把里边的kmpDlg.cpp文件了的部分内容用以下代码替换即可。
kmp算法无回溯的查找匹配串所在位置,效率更高·····
void CKmpDlg::OnButtonKmp()
{
// TODO: Add your control notification handler code here
//参照CKmpDlg::OnButtonLink()函数,填写完整,将函数中Find函数部分皆改写为
//KMP算法,提示:CString类型变量可通过下标引用单个字符元素,如m_EditResult[0],
//m_EditResult.GetLength()可求串长度。
CString m_sLink="";
int i=1,j,k;
i=IndexKMP(m_EditResult,"href",1);//定位href位置
while(i>0)
{
j=IndexKMP(m_EditResult,"\"",i+4); //定位href后第一个"位置
if(j<=0)
break;
k=IndexKMP(m_EditResult,"\"",j+1); //定位href后第二个"位置
if(k<=0)
break;
m_sLink+=m_EditResult.Mid(j,k-j-1)+"\r\n"; //Mid为求子串函数,第一个参数j+1换成j才不会丢失第一个字符
//m_sLink+="nihao";
i=IndexKMP(m_EditResult,"href",k+1);
}
m_EditResult=m_sLink;
UpdateData(FALSE);
}
int IndexKMP(CString S,CString T,int start)
{
//填写KMP算法函数,包含求next部分
//start为主串定位起始位置,即从start向后查找模式串
int i=start;
int j=1;
int next[1000];
GetNext(T,next);
while (i<=S.GetLength()&&j<=T.GetLength()){
if (j==0||S[i-1]==T[j-1]){//这已改变
++i;
++j;
}
else
j=next[j];
}
if (j>T.GetLength()){
return i-T.GetLength();
} else
return 0;
}
void GetNext(CString T,int next[])
{
//填写求next函数
int i=1;
next[1]=0;
int j=0;
while (i<T.GetLength()){
if (j==0||T[i]==T[j]){
++i;
++j;
next[i]=j;
}else
j=next[j];
}
}
转载于:https://www.cnblogs.com/lixingle/archive/2012/11/03/3313017.html
解析网页(KMP算法实现部分)相关推荐
- 字符串 kmp算法解析
kmp算法是用于解析字符串匹配的问题.给定两个字符串:第一个是文本串str,第二个是匹配串p.问str中最早有那个位置能完全和匹配串p匹配呢? 1. 暴力匹配 假设文本串的长度为n,匹配串的长度为m. ...
- 自研!东鸽用 Go 语言写了一个能够自动解析新闻网页的算法
这是「进击的Coder」的第 593 篇技术分享 作者:韦世东 来源:NightTeam " 阅读本文大概需要 8 分钟. " 输入网页文本(不需要输入 xpath),自动结构化输 ...
- 【数据结构与算法】之深入解析KMP算法的核心原理和实战演练
一.简介 ① 概念 KMP 算法是一种改进的字符串匹配算法,由 D.E.Knuth,J.H.Morris 和 V.R.Pratt 提出的,因此称它为克努特-莫里斯-普拉特操作,简称 KMP 算法. K ...
- c语言数据结构kmp中next计算,数据结构——关于KMP算法中next函数的详细解析
以前看到数据结构中字符串的模式匹配时,花了半天的时间,才把KMP算法中的next函数整明白了,结果过了几天在看到这时,只记得next[j+1]=next[j]+1,但是有时候能套公式正确算出,有时候就 ...
- KMP算法模板与解析
全部数据结构.算法及应用课内模板请点击:https://blog.csdn.net/weixin_44077863/article/details/101691360 将KMP算法,就要先讲讲它是用来 ...
- 【算法】KMP算法完全解析(C语言实现)
①KMP算法到底是用来干什么的? KMP算法所做的事情,就是在字符串中寻找子串.比如ilovecode这个字符串中,我们可以搜寻到love这个子串.但如果用回溯的暴力方法寻找子串(即两个for循环), ...
- POJ 3461 Oulipo(kmp算法解析)
题目链接:https://cn.vjudge.net/contest/320014#problem/F Sample Input 3 BAPC BAPC AZA AZAZAZA VERDI AVERD ...
- KMP算法具体解释(转)
作者:July. 出处:http://blog.csdn.net/v_JULY_v/. 引记 此前一天,一位MS的朋友邀我一起去与他讨论高速排序,红黑树,字典树,B树.后缀树,包含KMP算法,只有在解 ...
- (转)KMP算法原理讲解及模板C实现
原作者:v_JULY_v 1. 引言 本KMP原文最初写于2年多前的2011年12月,因当时初次接触KMP,思路混乱导致写也写得混乱.所以一直想找机会重新写下KMP,但苦于一直以来对KMP的理解始终不 ...
最新文章
- bzoj 1233 or 3549
- css 边缘闪光_css文字渐变+内发光+投影效果
- SQL语句关键字执行顺序
- java中装饰器_Java设计模式12:装饰器模式
- java中月日年这种怎么转换成年月日_最“热乎”的Java社招面试经历分享(共40个面试题)...
- java package报错_Java基础知识总结 - 超详细篇(上)
- python计算股票趋势_通过机器学习的线性回归算法预测股票走势(用Python实现)...
- 选课网站html源码,选课系统网页制作(26页)-原创力文档
- 2021华为杯建模---总结
- c++:怎么将ctime时间转化为一个具体的秒数值_Linux下如何删除长时间不使用的旧文件?...
- Linux操作系统使用基础02:Linux系统安装与登陆
- webpack4导入全局sass文件
- HTML+CSS制作旋转的loading效果
- android multipartentity 怎么上传参数,android-通过MultipartEntityBuilder通过HTTP表单上传文件,并显示进度b...
- js知识梳理1:理解对象的属性特性
- python脚本调度程序_python任务调度实例分析
- OpenGL超级宝典(第7版)笔记1 清单的初始环境配置part1
- linux环境 下载Neo4j
- 敌兵布阵(CDQ分治模板题)
- 十大热门经典历史小说,大有希望获得第四届橙瓜网络文学奖
热门文章
- bilibili怎么用用户名登录_bilibili账号安全中心 | 手游网游页游攻略大全
- android uri转file_Android世界:ContentProvider使用
- golang超时控制
- hiberanate 主键查询慢_hibernate 新加数据 查询 缓存 变慢
- Linux指定jre运行jar包,Linux如何运行和停止jar包
- Spring main方法中怎么调用Dao层和Service层的方法
- yum提示Another app is currently holding the yum lock; waiting for it to exit...处理办法
- Linux报错问题:bash: vi: command not found
- Python——安装OpenCV2
- 微软公司软件开发模式简介