符号匹配

题目:给一个字符串,判断其中的符号是否匹配,如“[]{}()”,这个匹配;但“[(])}{”这样的就不匹配。

思路:利用栈的特性。

import java.util.Stack;

public class MatchClass {
    
    
    public static void main(String[] args){
        String str = "(){}[]";
        System.out.println(isMatch(str));
    }
    
    public static boolean isMatch(String str){
        if(str.length() == 0 || str == null)
            return false;
        char[] chs = str.toCharArray();
        Stack<Character> stack = new Stack<Character>();
        int i =0;
        String left = "({[";
        String right = ")}]";
        while(i<chs.length){
            if(left.contains(chs[i]+"")){
                stack.push(chs[i]);
            }else{
                if(stack.isEmpty()){
                    return false;
                }else{
                    char topChar = stack.pop();
                    int leftIndex = left.indexOf(topChar);
                    int rightIndex = right.indexOf(chs[i]);
                    if(leftIndex != rightIndex)
                        return false;
                }
            }
            i++;
        }
        return stack.isEmpty();
    }

}
原文地址:https://www.cnblogs.com/lfdingye/p/7363771.html