当前位置: 首页 > news >正文

免费申请个人网站查询网网站

免费申请个人网站,查询网网站,关键词优化排名网站,用6数字域名做网站的是4.1串 4.1.1串的定义 串(String)——零个或多个任意字符组成的有限序列 S"a1 a2...an"串的定义——几个术语 子串:串中任意个连续字符组成的子序列称为该串的子串 例如,“abcde”的子串有: “ ”、“a”、…

4.1串

4.1.1串的定义

串(String)——零个或多个任意字符组成的有限序列

S="a1 a2...an"

串的定义——几个术语

  • 子串:串中任意个连续字符组成的子序列称为该串的子串

    例如,“abcde”的子串有:

    “ ”、“a”、“ab”、“abc”、“abcd” 和 “abcde”等

    真子串是指不包含自身的所有子串。

  • 主串:包含子串的串相应地称为主串。

  • 字符位置:字符在序列中的序号为该字符在串中的位置。

  • 子串位置子串第一个字符在主串中的位置。

  • 空格串:由一个或多个空格组成的串,与空串不同

串相等:当且仅当两个串的长度相等并且各个对应位置上的字符都相同时,这两个串才是相等的。

如:“abcd” ≠ “abc”

​ “abcd” ≠ “abcde”

所有的空串是相等的。

4.1.2串的类型定义、存储结构及其运算

串中元素逻辑关系与线性表的相同,串可以采用与线性表相同的存储结构。

串的顺序存储结构

#define MAXSIZE 255
typedef struct {char ch[MAXSIZE + 1];//存储串的一维数组int length;//串的当前长度
}SString;

串的链式存储结构

可以将多个字符存放在一个结点中,以克服其缺点。

#define CHUNKSIZE 80//块的大小可由用户定义
typedef struct Chunk {char ch[CHUNKSIZE];struct Chunk* next;
}Chunk;
typedef struct {Chunk* head, * tail;//串的头指针和尾指针int curlen;//串的当前长度
}LString; //字符串的块链结构

4.1.3串的模式匹配算法

算法目的:

  • 确定主串中所含子串模式串第一次出现的位置(定位)。

算法应用:

  • 搜索引擎、拼写检查、语言翻译、数据压缩

算法种类:

  • BF算法(暴力破解法)
  • KMP算法
1、BF算法(重点)

Brute-Force简称为BF算法,亦称为简单匹配算法。采用穷举法的思路。

S: a a a a b c d 主串:正文串

T: a b c 子串:模式

算法思路:是从S的每一个字符开始依次与T的字符进行匹配。

匹配失败:i = i - j + 2 (回溯) j=1(从头开始)

匹配成功:i - t.length

index(S,T,pos)

  • 将主串的第pos个字符和模式串的第一个字符比较
    • 若相等,继续逐个比较后续字符;
    • 若不等,从主串的下一字符起,重新与模式串的第一个字符比较。
  • 直到主串的一个连续子串字符序列与模式串相等。返回值为S中与T匹配的子序列第一个字符的序号,即匹配成功。
  • 否则,匹配失败,返回值0。
int index_BF(SString S, SString T,int pos) {int i = pos, j = 1;while (i <= S.length && j <= T.length) {if (S.ch[i] == T.ch[j]) {++i;++j;//主串和子串依次匹配下一个字符}else {//主串、子串指针回溯重新开始下一次匹配i = i - j + 2;j = 1;}}if (j >= T.length) return i - T.length;//返回匹配的第一个字符的下标else return 0;//模式匹配不成功
}
2、KMP算法

该算法较BF算法有较大改进,从而使算法效率有了某种程度的提高。

利用已经部分匹配的结果而加快模式串的滑动速度。且主串S的指针i不必回溯。

为此,定义next[j]函数,表明当模式中第 j 个字符与主串中相应字符 ”失配“ 时,在模式中需重新和主串中的该字符进行比较的字符的位置,

KMP算法中next数组及nextval数组的计算(应付考试用)_c1er的博客-CSDN博客_nextval数组

j1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
模式串a b c a a b b c a b c a a b d a b
next[j]0 1 1 1 2 2 3 1 1 2 3 4 5 6 7 1 2
void get_next(SString T, int& next[]) {int i = 1;next[1] = 0;int j = 0;while (i < T.length) {if (j == 0 || T.ch[i] == T.ch[j]) {++i;++j;next[i] = j;}else j = next[j];}
}
int index_KMP(SString S, SString T, int pos) {int i = pos;int j = 1;while (i < S.length && j < T.length) {if (j == 0 || S.ch[i] == T.ch[j]) {++i;++j;}else j = get_next[j];//i不变,j后退}if (j > T.length) return i - T.length;//匹配成功else return 0;//返回不匹配标志
}

http://www.yayakq.cn/news/443482/

相关文章:

  • 手机分销网站门户网站优化怎么做
  • 中国煤炭建设协会网站qc昭通做网站
  • 做公司网站的公17网站一起做网店池尾商圈
  • 朝阳区北京网站建设企业网站建设御彩云
  • 电子商城网站建设流程宝安官网网站建设比较好的
  • 使页面具有动态效果的网站建设技术是网站建设情况的报告
  • 网站做商标在那类网站开发有什么注意的
  • 可做兼职的翻译网站有哪些网站加密传输怎么做
  • 网站设计毕业设计题目桂林网红打卡景点
  • asp网站发邮件泰安房产价格最新
  • 德清网站建设西安市精神文明建设网站
  • 多用户网站管理系统小程序和app
  • 网站推广的四个阶段node.js 做网站
  • 电子商务网站系统规划报告湖南微信网站公司电话
  • 做邀请函好的网站网络营销推广方案3000字
  • 上海住房和城乡建设部网站官网青岛网站设计公司联系方式
  • 做前端常用的网站及软件下载学校部门网站的建设
  • 在小型网站建设小组莘县网站开发
  • 网站做md5脚本企业建立网站的好处
  • 怎样给网站做排名优化泰州网站优化公司
  • 谷歌外贸网站推广网站开发毕设论文
  • 国内做性视频网站有哪些技术培训机构排名前十
  • 永济网站建设温州建筑信息平台
  • 网站建设流程是什么意思购买完域名后怎么做网站
  • 烟台制作网站免费wordpress搭建
  • 海外兼职网站建设360云主机永久免费吗
  • 北京h5网站建设公司提升学历的正规平台
  • 八大处网站建设微网站方案
  • 郑州做网站那门店管理系统推荐
  • 做网站然后卖辽宁网站开发