Valid Parentheses

来源:互联网 发布:北大青鸟网络课程介绍 编辑:程序博客网 时间:2024/06/05 02:45
https://oj.leetcode.com/problems/valid-parentheses/

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.

题意:括号匹配,要求同种括号一一对应,不能嵌套

思路:用栈存放左括号,如果遇到右括号则pop出比较,如果对不上则表示匹配失败。最终全部比较完后如果栈中不为空,则匹配失败,否则表示匹配成功

实现:
public class Solution {    public boolean isValid(String s ) {        List< Character> left=new LinkedList<Character>();        char[]arr =s .toCharArray();        for(int i =0;i <s .length();i++){           if(arr [i ]=='(' ||arr [i ]=='[' ||arr [i ]=='{' )//如果是左括号,则入栈               left.add( arr[ i]);           else{               if(left .size()==0)//如果栈为空,则匹配不成功                    return false ;               char t =left .get(left .size()-1);//取出栈顶元素               left.remove( left.size()-1);               switch(arr [i ]){                    case ')' :                         if(t !='(' )                              return false ;                         break;                    case ']' :                         if(t !='[' )                              return false ;                         break;                    case '}' :                         if(t !='{' )                              return false ;                         break;              }          }        }        if(left .size()!=0)//如果栈不为空,表示左括号多了,匹配不成功           return false ;        return true ;    }}


0 0
原创粉丝点击