一、题目描述
给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
1)左括号必须用相同类型的右括号闭合。
2)左括号必须以正确的顺序闭合。
二、解题思路
利用栈的先进后出原则,但需要注意:
(1)在peek栈顶元素之前,需要判断栈是否为空!
(2)栈的表示:Deque<Character> deque = new LinkedList<>();(Deque为LinkList的父类)
三、代码
class Solution10 {
public boolean isValid(String s) {
Deque<Character> deque = new LinkedList<>();
for (int i = 0; i < s.length(); i++) {
char ch = s.charAt(i);
//当为此三个符号、或者栈为Null的时候入栈
if (ch == '(' || ch == '{' || ch == '['||deque.isEmpty()) {
deque.push(ch);
} else {
//以下为找能匹配符号的过程
if (deque.peek() == '(') {
if (ch == ')') {
deque.pop();
} else {
return false;
}
} else if (deque.peek() == '{') {
if (ch == '}') {
deque.pop();
} else {
return false;
}
} else {
if (ch == ']') {
deque.pop();
} else {
return false;
}
}
}
}
if (deque.isEmpty()) {
return true;
}
return false;
}
}