题目:给一个字符串,判断其中的符号是否匹配,如“[]{}()”,这个匹配;但“[(])}{”这样的就不匹配。
思路:利用栈的特性。
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(); } }