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

栈和队列不再过多描述,了解入栈出栈规则,入队出队规则,栈的递归应用即可,面试肯定不会考这种概念,太简单。
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。
匹配方法:当我们第一次匹配的时候,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题

电动球阀的类型及特点
华为助力民航构筑稳定、安全的数字底座与开放平台
3D打印行业产业链分析
国产工控主板有哪些优势? 购买时应该注意什么?
禾赛科技连续第五次上中国领先汽车科技企业50榜单
数据结构之栈,队列,串介绍
【概念产品CP130】M.2 NVMe SSD 转 CFexpress B 型硬盘转换盒
新款荣耀MagicBook Pro已获得了国家3C认证支持一碰传功能
概伦电子与阿里云深化合作加速推动EDA上云
网络分析仪校准的频率取决于什么
佳明手持GPS eTrex 302
Q3季度下旬显卡价格将调整 或因DRAM颗粒涨价而上调价格
Redmi的四摄拍照媲美光学变焦
日本两大运营商计划在未来十年内投资380亿美元建设5G网络
Linux Kernel 5.6版系统内核正式版本发布 加入对USB4的支持
Command Line Tools for HarmonyOS最新版本简介
五百以内有什么半入耳蓝牙耳机?最好的半入耳蓝牙耳机推荐
带电作业的接线顺序你了解吗?以前你有没有接错例看看吧
电梯无线网桥的安装需要注意些什么
详解互斥信号量的概念和运行