LeetCode 20 括号匹配

 

package com.lt.datastructure.Array;
import java.util.Stack;
/**
 * 括号的匹配
 * 
 * 遍历字符串s,如果是左括号,入栈
 * 如果当前字符是右括号,栈为空,则匹配失败
 * 如果当前字符是右括号,栈不为空,将其与栈顶字符匹配,匹配不成功则返回false
 * 遍历判断结束后,当且仅当栈为空,匹配成功
 */
public class Solution {

    public boolean isValid(String s) {
     Stack<Character> stack = new Stack<>();
     for(int i=0; i<s.length(); i++){
         char c = s.charAt(i);
         //case:左括号
         if(c=='(' || c=='[' || c=='{'){
             stack.push(c);
         }
         else{
         //case:右括号
          if(stack.isEmpty()) return false;
            
          char chartop = stack.pop();
          if(c==')' && chartop !='(') return false;
          if(c==']' && chartop !='[') return false;
          if(c=='}'&& chartop!='{') return false;
         }
     }
        return stack.isEmpty();   
    }    
    //测试用例
    public static void main(String[] args) {
        System.out.println(new Solution().isValid("(){}"));
    }
}

 

 

 

posted @ 2018-11-16 21:43  IslandZzzz  阅读(214)  评论(0编辑  收藏  举报