LeetCode-020-有效的括號
阿新 • • 發佈:2021-06-25
有效的括號
題目描述:給定一個只包括 '(',')','{','}','[',']' 的字串 s ,判斷字串是否有效。
有效字串需滿足:
左括號必須用相同型別的右括號閉合。
左括號必須以正確的順序閉合。示例說明請見LeetCode官網。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/valid-parentheses/
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
解法一:利用棧
初始化一個左括號棧leftParentheses,遍歷字串s的每個字元,當遇到左括號時,將當前字元入棧,當遇到右括號時,判斷leftParentheses
棧頂的字元是否是當前字元對應的左括號,如果不是,返回無效;否則出棧。遍歷完成後,判斷leftParentheses是否為空,如果不為空,說明左括號沒有對應的右括號,返回無效;否則,有效。
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("()[]{}")); } }
【每日寄語】每個睡醒後的早晨都是一件禮物,把每個開心後的微笑當成一個習慣,美好的一天從現在開始。