给定一个只包含(‘, ‘)’, ‘{‘, ‘}’, ‘[’ 和‘]’的字符串,验证它是不是有效的。括号必须配对,而且要以正确的顺序。html
用一个栈来对输入的括号串进行处理,若是是左括号就入栈,若是是右括号就与栈顶元素看是否组成一对括号,组成就弹出,而且处理下一个输入的括号,若是不匹配就直接返回结果。java
import java.util.*; public class Solution { public boolean isValid(String s) { Deque<Character> stack = new LinkedList<>(); int index = 0; Character top; while (index < s.length()) { Character c = s.charAt(index); switch (c) { case '(': case '[': case '{': stack.addFirst(c); break; case ')': if (stack.isEmpty()) { return false; } top = stack.getFirst(); if (top == '(') { stack.removeFirst(); } else if (top == '[' || top == '{') { return false; } else { stack.addFirst(c); } break; case ']': if (stack.isEmpty()) { return false; } top = stack.getFirst(); if (top == '[') { stack.removeFirst(); } else if (top == '(' || top == '{') { return false; } else { stack.addFirst(c); } break; case '}': if (stack.isEmpty()) { return false; } top = stack.getFirst(); if (top == '{') { stack.removeFirst(); } else if (top == '[' || top == '(') { return false; } else { stack.addFirst(c); } break; default: return false; } index++; } return stack.isEmpty(); } }
原本想找找现成的,去,都写的好复杂。本身写一个吧。挺有成就感。哈哈spa
|