Valid Parentheses-LeetCode

    xiaoxiao2021-03-25  65

    Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

    The brackets must close in the correct order, "()" and "()[]{}" are all valid but "(]" and "([)]" are not.

    题目目标:进行三类括号的匹配,即可以理解为在一种超长的运算式中括号加的对不对。对:每一个右括号都有唯一确定的左括号和他匹配。

    题目思路:做过超级计算器的同学都知道这类括号匹配问题要用栈(先进后出)来处理吧,没啥可说的上代码。

    import java.util.Stack; public class Solution { public boolean isValid(String s) { Stack<Character> identifyorder=new Stack<Character>(); char[] array=s.toCharArray(); for(int i=0;i<array.length;i++){ char visit=array[i],tofit='*'; switch(visit){ //当扫到右括号时,生成其对应的左括号,常事与栈顶元素匹配。成功:弹出栈顶左括号;失败入栈。 case ')':tofit='(';break; case ']':tofit='[';break; case '}':tofit='{';break; default:tofit='*'; } if(!identifyorder.empty()&&tofit==identifyorder.peek()){ identifyorder.pop(); }else{ identifyorder.add(visit); } } if(identifyorder.empty())return true; //扫描完成,栈空则,串的括号全部正确匹配;否则,匹配出错 else return false; } }

    转载请注明原文地址: https://ju.6miu.com/read-32810.html

    最新回复(0)