[TOC]
# 題目
來自leetcode中文社區
https://leetcode-cn.com/problems/valid-parentheses/description/
給定一個只包括 `'(',')','{','}','[',']' `的字符串,判斷字符串是否有效。
有效字符串需滿足:
1. 左括號必須用相同類型的右括號閉合。
2. 左括號必須以正確的順序閉合。
注意空字符串可被認為是有效字符串。
# 分析

一樣的話就出棧
棧頂元素反映了在嵌套的層次關系中,最近的需要匹配的元素
# 代碼
~~~
import java.util.Stack;
public class Solution {
public boolean isValid(String s) {
Stack<Character> stack = new Stack<Character>();
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
//如果是左括號就壓入棧
if (c == '(' || c == '[' || c == '{') {
stack.push(c);
} else {
if (stack.isEmpty()) {
return false;
}
char topChar = stack.pop();
//如果右側的括號是這個,但是左側的括號不是他們匹配的,就返回false
if (c == ')' && topChar != '(') {
return false;
}
if (c == ']' && topChar != '[') {
return false;
}
if (c == '}' && topChar != '{') {
return false;
}
}
}
//如果棧還有字符,就表示他里面還有字符,但是沒有人和他匹配了
return stack.isEmpty();
}
}
~~~