本文共 804 字,大约阅读时间需要 2 分钟。
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合
可以利用栈(先进后出),总共就三种类型的括号,我们将每一种括号的左半边存入到栈中,然后我们分别将字符串中剩下的每种括号的右半边与栈顶元素进行比较,如果能匹配上就将栈顶元素弹出,此时再进行当前栈顶元素的判断。
第一步:先声明一个字符串类型的栈,然后遍历栈中的每一个字符,将字符中的每种括号的左半边存储到栈中。
第二步:然后进行判断,列举出每一种匹配的条件,当满足某一种条件之后将其出栈。
class Solution { public boolean isValid(String s) { //定义一个用来装字符类型的栈 Stackstack = new Stack<>(); for(int i=0; i
第4行:定义一个用来装字符类型的栈。
第6行:遍历字符串s,获取第i个位置的字符
第8行:进行判断,如果拿到的第i个位置的字符是左边括号类型就压栈
第9行:进栈操作,就是将左边的字符压如栈中。
第15行:栈的非空判断,就是说如果栈里面有元素,那么进入下面的操作
第17行:stack.peek() 取出栈顶值,不出栈,将栈顶值赋给top
第19到24行:在下一次循环取出的某个字符能与栈顶匹配的话,就stack.pop(),该方法用于从堆栈中弹出元素,该元素从堆栈顶部弹出,并从堆栈顶部移除。
第34行:如果栈空了那就说明都匹配上了,如果栈里还有元素,继续上面你的方法。
新手小白自己的一些见解,可能还有更好的方法或者效率更高的方法,不足之处还望指正。
转载地址:http://aogki.baihongyu.com/