企业网站建设jz190,福建网站建设,seo技术培训山东,网站的图文链接怎么做作者#xff1a;狮子也疯狂 专栏#xff1a;《算法详解》 愿你生如夏花之绚烂#xff0c;幸运永远与你相伴#xff0c;疯狂常在。 目录一. #x1f981; Stack容器的来历1.1 操作栈的方法二. #x1f981; Stack的使用2.1 题目2.2 分析2.3 详细算法实现2.4 力扣AC截图三… 作者狮子也疯狂 专栏《算法详解》 愿你生如夏花之绚烂幸运永远与你相伴疯狂常在。 目录一. Stack容器的来历1.1 操作栈的方法二. Stack的使用2.1 题目2.2 分析2.3 详细算法实现2.4 力扣AC截图三. 总结一. Stack容器的来历
Stack 栈容器是 Vector 的一个子类它实现了一个标准的后进先出(LIFOLast In Frist Out)的栈。它通过 5 个操作方法对 Vector 进行扩展允许将向量视为堆栈。
1.1 操作栈的方法
Modifier and TypeMethod and Descriptionbooleanenpty() :判断该栈是否为空Epeek(): 查看栈顶元素Epop(): 删除栈顶元素并返回该值Epush(E item):将元素推入栈顶intsearch(object o) : 返回该元素的位置
二. Stack的使用
这里以力扣第20题为实战案例查看
2.1 题目 给定一个只包括 ‘(’‘)’‘{’‘}’‘[’‘]’ 的字符串 s 判断字符串是否有效。 有效字符串需满足 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号 2.2 分析
这一道题明显是可以使用栈的结构来做实例化一个栈Stack String ,对字符串做一次循环遍历在遍历过程中遇到左括号无论是什么左括号{ [都将其对应的右括号放进stack容器中如果遇到右括号c则会从stack顶中弹出一个栈顶元素x将x与c比较使用flag这一布尔值默认为true即匹配来判断是否匹配如果不匹配则修改flag为false。到最后遍历结束如果stack ——!empty(),则也修改flag为false最后返回flag。 注意到有效字符串的长度一定为偶数因此如果字符串的长度为奇数我们可以直接返回 False省去后续的遍历判断过程。
2.3 详细算法实现
class Solution {public boolean isValid(String s) {StackString stack new Stack();boolean flag true;for(int i 0;is.length();i){char str s.charAt(i);if(str (){stack.push());}if(str [){stack.push(]);}if(str {){stack.push(});}if(str )||str ]||str }){if(stack.empty()){return false;}String c stack.pop();if(c.charAt(0) ! str){flag false;break;}}}if(!stack.empty()){flag false;}return flag;}
}2.4 力扣AC截图 三. 总结
Leetcode的一道难度为简单的算法题可以帮助大家很好的理解Stack这个数据结构希望大家喜欢。更多专栏请点击
专栏名字Elasticsearch专栏esspring专栏spring开发redis专栏redis学习笔记项目专栏项目集锦修bug专栏bug修理厂