給定一個(gè)只包括 '(',')'踪少,'{'塘安,'}','['援奢,']' 的字符串兼犯,判斷字符串是否有效。
有效字符串需滿足:
左括號(hào)必須用相同類型的右括號(hào)閉合集漾。
左括號(hào)必須以正確的順序閉合切黔。
注意空字符串可被認(rèn)為是有效字符串
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-parentheses
解題思路
遍歷字符串, 遇到左括號(hào)入棧, 右括號(hào)則彈出棧頂并比較
如果比較發(fā)現(xiàn)不能組成一對(duì)正確的括號(hào), 返回false
遍歷完字符串后, 檢查棧是否為空, 如果是有效的括號(hào)則遍歷完后棧必定為空
代碼
class Solution {
public boolean isValid(String s) {
char[] letters = s.toCharArray();
LinkedList<Character> stack = new LinkedList<>();
for (char letter : letters) {
// 如果是左括號(hào), 入棧
if (letter == '{' || letter == '[' || letter == '(') {
stack.push(letter);
// 如果是右括號(hào), 彈出棧頂并比較
} else if (letter == '}' || letter == ']' || letter == ')') {
// 彈出棧頂
Character top = stack.pollFirst();
if (top == null || letter == '}' && top != '{' || letter == ']' && top != '[' || letter == ')' && top != '(') {
return false;
}
}
}
// 如果括號(hào)匹配正確, 則stack為空, 只要有左括號(hào)未彈出, 則說明括號(hào)匹配不正確
return stack.isEmpty();
}
}