有效的括號(hào)
題目描述:給定一個(gè)只包括 '('煤裙,')','{'噪漾,'}'硼砰,'[',']' 的字符串 s 欣硼,判斷字符串是否有效题翰。
有效字符串需滿足:
左括號(hào)必須用相同類型的右括號(hào)閉合。
左括號(hào)必須以正確的順序閉合诈胜。示例說(shuō)明請(qǐng)見(jiàn)LeetCode官網(wǎng)豹障。
來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/valid-parentheses/
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán)耘斩,非商業(yè)轉(zhuǎn)載請(qǐng)注明出處沼填。
解法一:利用棧
初始化一個(gè)左括號(hào)棧leftParentheses,遍歷字符串s的每個(gè)字符括授,當(dāng)遇到左括號(hào)時(shí)坞笙,將當(dāng)前字符入棧,當(dāng)遇到右括號(hào)時(shí)荚虚,判斷leftParentheses棧頂?shù)淖址欠袷钱?dāng)前字符對(duì)應(yīng)的左括號(hào)薛夜,如果不是,返回?zé)o效版述;否則出棧梯澜。遍歷完成后,判斷leftParentheses是否為空渴析,如果不為空晚伙,說(shuō)明左括號(hào)沒(méi)有對(duì)應(yīng)的右括號(hào)吮龄,返回?zé)o效;否則咆疗,有效漓帚。
import java.util.Stack;
public class Solution {
public static boolean isValid(String s) {
if (s == null || s.length() == 0) {
return true;
}
Stack<Character> leftParentheses = new Stack<>();
for (char parentheses : s.toCharArray()) {
if (parentheses == '(' || parentheses == '{' || parentheses == '[') {
leftParentheses.push(parentheses);
} else if (parentheses == ')') {
if (leftParentheses.size() > 0 && leftParentheses.peek() == '(') {
leftParentheses.pop();
} else {
return false;
}
} else if (parentheses == ']') {
if (leftParentheses.size() > 0 && leftParentheses.peek() == '[') {
leftParentheses.pop();
} else {
return false;
}
} else if (parentheses == '}') {
if (leftParentheses.size() > 0 && leftParentheses.peek() == '{') {
leftParentheses.pop();
} else {
return false;
}
}
}
if (leftParentheses.size() != 0) {
return false;
}
return true;
}
public static void main(String[] args) {
System.out.println(isValid("()[]{}"));
}
}
【每日寄語(yǔ)】每個(gè)睡醒后的早晨都是一件禮物,把每個(gè)開(kāi)心后的微笑當(dāng)成一個(gè)習(xí)慣午磁,美好的一天從現(xiàn)在開(kāi)始尝抖。