数据结构与算法python语言描述ds串.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
1;文本……;求串长 取子串 定位子串(串匹配) 子串替换 两个串的连接 …;C语言函数库中提供的串处理函数 gets(str) : 输入一个串; puts(str) :输出一个串; strcat(str1, str2) : 串联接函数; strcpy(str1, str2, k) : 串复制函数; strcmp(str1, str2) :串比较函数; strlen(str) : 求串长函数; C++标准库中的string类 , , ==, !=, =, =, + , =, … size, assign, append, compare, find, replace, reserve, … ;顺序存储 静态数组 动态数组 块链存储 链式,每个结点存储一定长度的子串;#define MAXSTRLEN 255 typedef unsigned char SString[MAXSTRLEN + 1]; //用户可在255以内定义最大串长, //超过予定义长度的串值则被舍去,称之为“截断” ; // 0号单元存放串的长度 ;typedef struct { char *ch; // 按串长分配存储区 int length; // 串长度 } HString; ; #define CHUNKSIZE 80 // 块大小 typedef struct Chunk { char ch[CUNKSIZE]; struct Chunk *next; } Chunk; typedef struct // 串的链表结构 Chunk *head, *tail; // 串的头和尾指针 int curlen; // 串的当前长度 } LString;;str 是不变类型 对象创建后,内容(和长度)不变 采用顺序存储表示 ——动态数组;串匹配与KMP算法;许多计算机应用的最基本操作是字符串匹配。如 用编辑器或字处理系统工作时,在文本中查找单词或句子(中文字或词语),在程序里找拼写错误的标识符等 email 程序的垃圾邮件过滤器,google 等网络检索系统 各种防病毒软件,主要靠在文件里检索病毒模式串 在分子生物学领域:DNA 细胞核里的一类长分子,在遗传中起着核心作用。DNA 内有四种碱基:腺嘌吟(adenine),胞嘧啶(cytosine),鸟嘌吟(guanine),胸腺嘧啶(thymine)。它们的不同组合形成氨基酸、蛋白质和其他更高级的生命结构 DNA 片段可看作是a,c,g,t构成的模式,如 acgatactagacagt 考查在蛋白质中是否出现某个 DNA 片段,可看成与该 DNA 片段的串匹配问题。DNA 分子可以切断和拼接,切断动作由各种酶完成,酶也是采用特定的模式确定剪切位置;实际中模式匹配的规模(n 和 m)可能非常大,而且有时间要求 被检索的文本可能很大 网络搜索需要处理亿万的网页 防病毒软件要在合理时间内检查数以十万计的文件(以 GB 计) 运行在服务器上的邮件过滤程序,可能需要在一秒钟的时间内扫描数以万计的邮件和附件 为疾病/药物研究/新作物培养等生物学工程应用,需要用大量 DNA模式与大量 DNA 样本(都是 DNA 序列)匹配 由于在计算机科学、生物信息学等许多领域的重要应用,串模式匹配问题已成为一个极端重要的计算问题。高效的串匹配算法非常重要 有几个集中关注字符串匹配问题的国际学术会议,曾经有过专门的国际竞赛(见 wiki 页和万维网) 目前全世界一大半的计算能力是在做串模式匹配(做 DNA 分析);matching(t, p) # index(t, p) 返回子串p在t中的 位置;若不存在,返回-1 t = t0t1t2 … tn-1 称为主串(目标串) p = p0p1p2 … pm-1 称为子串(模式串) 通常有 m n ;def na?ve_matching(t, p): j, i = 0, 0 while j len(t) and i len(p): if t[j] == p[i] : j, i = j + 1, i + 1 else: # 不同时,j回溯,i回到头 j, i = j - i + 1, 0 if i == len(p): return j - i return -1 ;朴素的串匹配算法;每次匹配失败时,j回溯到i-j+1,i回溯到0 效果:模式每次向前滑动一步,从头比较; 时间复杂度:O(n * m) 例:t50=000…00

文档评论(0)

kuailelaifenxian + 关注
官方认证
文档贡献者

该用户很懒,什么也没介绍

认证主体太仓市沙溪镇牛文库商务信息咨询服务部
IP属地上海
统一社会信用代码/组织机构代码
92320585MA1WRHUU8N

1亿VIP精品文档

相关文档