给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
示例 1:
示例 2:
示例 3:
Deque 是双端队列的意思。所谓的双端队列,就是能在线性数据结构的两段,进行插入和删除操作。由于 Stack 的定义是在同一端进,同一端出。所以,如果 Deque 可以满足在两段进行插入和删除,自然也能在同一端进行插入和删除,也就是可以以此为基础,做成一个 stack。
- import java.util.Deque;
- import java.util.LinkedList;
-
- public class Kuo {
- public boolean isValid(String s) {
- Deque
deque = new LinkedList<>(); - char ch;
- for (int i = 0; i < s.length(); i++) {
- ch = s.charAt(i);
- //碰到左括号,就把相应的右括号入栈
- if (ch == '(') {
- deque.push(')');
- }else if (ch == '{') {
- deque.push('}');
- }else if (ch == '[') {
- deque.push(']');
- } else if (deque.isEmpty() || deque.peek() != ch) {
- return false;
- }else {//如果是右括号判断是否和栈顶元素匹配
- deque.pop();
- }
- }
- //最后判断栈中元素是否匹配
- return deque.isEmpty();
- }
-
- public static void main(String[] args) {
- String s ="{})";
- String a ="{{{}}}()";
-
- Kuo kuo = new Kuo();
-
- boolean res = kuo.isValid(s);
- System.out.println(res);
- System.out.println(kuo.isValid(a));
-
- }
- }