网站首页

人工智能P2P分享搜索全网发布信息网站地图标签大全

当前位置:诺佳网 > 电子/半导体 > 嵌入式技术 >

数据结构之栈,队列,串介绍

时间:2023-05-26 14:35

人气:

作者:admin

标签: 数据结构  之栈  队列     

导读:栈和队列不再过多描述,了解入栈出栈规则,入队出队规则,栈的递归应用即可,面试肯定不会考这种概念,太简单。...

栈和队列不再过多描述,了解入栈出栈规则,入队出队规则,栈的递归应用即可,面试肯定不会考这种概念,太简单。

LeetCode36栈的应用

图片

图片

图片

图片

比如说有相当多的四则运算,前缀,中缀,后缀的题目都与栈有关。

主要想讲一下串这种数据结构。串百分之九十九指的都是字符串,对于一个字符串S="Googlegoodgoor",来讲想要找到一个为“goor”的子串,最常用的方法暴力搜索,一位一位的对照,直至找到相应的子串,当然这种算法太过于复杂,对于一个复杂的字符串,除非你的正则表达式,用的非常的好,能够快速定位到需要的东西,否则你需要设计相当多的代码,来实现这个功能。下面介绍一种算法,KMP模式匹配算法,能够大大减少重复遍历的情况,这个算法很重要,2020年在面试腾讯C++岗位,让我手写过KMP算法。

讲一下大致流程,原理可以自己分析。

设模式串为S="abcdaabcab",子串为T="abcab",传统暴力解决方法S[0],T[0]比较,在比较S[1],T[1],当S[3],T[3]不相等的时候,S退回到S[0],T退回到T[0],当我们匹配到S[3],T[3]不等的时候S有必要退回S[2]重新比较么,显然第一次比较的所有动作全部白费,KMP很好的解决了这种重复遍历的情况,用一个Next数组来保存这些有用的信息。

Next数组,最长前缀默认Next[0]=-1,什么是最长前缀,对于子串abcab,有相等前缀后缀子串ab。

1.jpg

匹配方法:当我们第一次匹配的时候,S位置在S[3],T位置在T[3]不相等,我们借助next数组next[3]为0所以子串要退回到T[0]位置,与S[3]相比依然不相等,这时候就需要S移动到S[4]的位置,S[4]=T[0],但S[5]不等于T[1],即子串退回到next[1]的T[0]位置,即从后面开始可以匹配到子串。

LeetCode第28题

图片

图片

图片

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信