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

数据结构--第四章串、数组和广义表总结

知识点:

 1.串:

关于串的学习,我最大的收获是理解了KMP算法(解决串的模式匹配问题)和了解了Manacher算法(解决求字符串最长回文问题)。

在这一过程中,我常惊叹算法的巧妙,感慨前人的智慧结晶,以下是我对这两种算法的理解:

 

(1)KMP算法:

  这里就不贴代码了,就说说它的实现原理。具体可以看这里利用KMP算法解决串的模式匹配问题(c++) -- 数据结构

主串和模式串匹配到某一个位置发现 主串中1的部分和模式串中2部分不匹配时,

模式串就会移动一定的位置,如下图:

 

那么我们该移动多少呢?

我们继续往下看,上下这两个字符串分别是原来模式串的位置,和移动后模式串的位置。

能够这样移动的前提是保证 A == B,原来的匹配点截至到了1和2(即d)部分,

模式串移动之后匹配点就变成了1和c部分的比较。

 

 

为了能够实现KMP算法中模式串的移动,需要引入一个next[ ]数组。

next[ ] 存放已匹配子串中最长前后缀长度

 以红色部分c为例子:

已匹配的子串:abaab   →  最长前后缀ab  长度为2

 

 

KMP算法应用:PowerString问题(求字符串的最小周期)

 

(2)Manacher算法(马拉车算法):

 

 谈谈我对Manacher算法的理解

 

2.数组:

至于数组的学习,最大的收获和成就就是理解了十字链表的原理和操作过程,并成功将以实现。

以下博客已经写得挺详细的了,就不再重复声明:

利用十字链表压缩稀疏矩阵(c++)-- 数据结构

 


 

编程时遇到的困难:

 

1.利用KMP算法解决串的模式匹配问题(c++) -- 数据结构

2.利用十字链表压缩稀疏矩阵(c++)-- 数据结构

 


 

总结及学习心得:

 在作业和实践的题目中,我都选择了相对来说困难的完成方式,这对我来说是一种得到锻炼和学习的最好方式。

纵使过程很痛苦,熬了大半个星期的夜,幸运的是结果还算是差强人意。

 

——林子里有两条路,我选择了行人稀少的那一条,它改变了我的一生。(《未选择的路》)

 


 

目标:

 保持当前的学习热情,高要求严格自己,学习更多更巧妙的算法。

 


 

转载于:https://www.cnblogs.com/yi2105/p/10700148.html

相关文章:

  • 九九乘法-杨辉三角-质数
  • RDS管理控制台如何手机备份MySQL数据库?
  • Jmeter分布式测试的各种坑之jmeter-server修改ip
  • JavaScript作用域相关的总结
  • 为什么SaaS软件集成是未来的必然趋势?
  • 华奥延保对代码的理解(华奥延保)
  • 《代码敲不队》第一次作业:团队亮相
  • HashMap 与 HashSet 联系
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • python游戏开发:59行代码编写飞扬的独眼鸟
  • isilon SMB 控制允许IP访问
  • D35 876. Middle of the Linked List
  • 前端常用的缓存技术
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • 女程序媛与男程序猿的一天,萌萌哒!
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【附node操作实例】redis简明入门系列—字符串类型
  • canvas 高仿 Apple Watch 表盘
  •  D - 粉碎叛乱F - 其他起义
  • HashMap剖析之内部结构
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • log4j2输出到kafka
  • magento2项目上线注意事项
  • mysql常用命令汇总
  • Nginx 通过 Lua + Redis 实现动态封禁 IP
  • orm2 中文文档 3.1 模型属性
  • Redis中的lru算法实现
  • underscore源码剖析之整体架构
  • Yeoman_Bower_Grunt
  • yii2权限控制rbac之rule详细讲解
  • 安卓应用性能调试和优化经验分享
  • 道格拉斯-普克 抽稀算法 附javascript实现
  • 工作中总结前端开发流程--vue项目
  • 基于 Babel 的 npm 包最小化设置
  • 为物联网而生:高性能时间序列数据库HiTSDB商业化首发!
  • 用Canvas画一棵二叉树
  • 用Node EJS写一个爬虫脚本每天定时给心爱的她发一封暖心邮件
  • ​软考-高级-系统架构设计师教程(清华第2版)【第12章 信息系统架构设计理论与实践(P420~465)-思维导图】​
  • ###C语言程序设计-----C语言学习(3)#
  • #图像处理
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (办公)springboot配置aop处理请求.
  • (附源码)springboot宠物医疗服务网站 毕业设计688413
  • (四)汇编语言——简单程序
  • (转)c++ std::pair 与 std::make
  • (转)visual stdio 书签功能介绍
  • (转)菜鸟学数据库(三)——存储过程
  • (转)创业家杂志:UCWEB天使第一步
  • .Net MVC + EF搭建学生管理系统
  • .net websocket 获取http登录的用户_如何解密浏览器的登录密码?获取浏览器内用户信息?...
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • [20161101]rman备份与数据文件变化7.txt
  • [Angular] 笔记 20:NgContent
  • [ArcPy百科]第三节: Geometry信息中的空间参考解析