leetcode valid parentheses

先来学习单词:parentheses 重音在后 意思为圆括号

通过这道题目看出自己栈的应用掌握得还很不够 翻书一看发现这算法还是书上例子_(:3」∠)_ 自己鄙视自己一万遍

栈的特点:只能对栈顶元素进行插入or删除的操作;先入后出

这里看完书之后又有一点感想:很多问题不是不能用简单的数组来解决 只是相比于用数组 选择合适的数据结构能够适当的简化问题 使人集中于算法的设计


题目要求:输入一串包含小括号对,中括号对,花括号对的字符串,如果这些符号都能一一最近的匹配则返回true,eg.()[]{}-->true or ({})-->true,其他的情况就返回false

这题的思路:顺序读取字符串 如果当前的字符是' (' || '{' || '[', 则将其压入栈,这里涉及到急需被解决的顺序的问题,位于栈顶的上述字符表示是最需要紧急匹配的,匹配了这个才可以匹配之前入栈的上述元素;如果当前的字符是 ')' || '}' || ']',则需要判断栈顶元素,如果新读取的字符可以和栈顶元素匹配,则弹出栈顶元素,否则这些元素入栈也没用,它们再也不能被消除了,直接return false就可以

你可能感兴趣的:(leetcode valid parentheses)