判断多个括号是否闭合
给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’,的字符串,判断字符串是否有效。有效字符串满足:
1. 左括号必须用相同类型的右括号闭合。
2. 括号必须以正确的顺序闭合。
利用栈算法可以很好的解决这个问题,下面是我写的代码:
import java.util.LinkedList; public class Demo { static public boolean action(String s) { LinkedList<Character> queue = new LinkedList<Character>(); char ch[] = s.toCharArray(); for (int i = 0, length = ch.length; i < length; i++) { char a = ch[i]; if (a == { || a == ( || a == [) { queue.push(a);// 压入栈 } else { if (queue.size() == 0) {// 如果栈是空的 return false; } char b = 0; switch (a) { case }: b = {; break; case ): b = (; break; case ]: b = [; break; default: return false; } Character top = queue.poll();// 弹出栈顶值 if (top != b) { return false; } } } return queue.size() == 0; } public static void main(String[] args) { System.out.println(action("{()[][{()}][]}")); } }
这段代码针对不同字符串的结果如下表: