1. 程式人生 > 其它 >LeetCode-020-有效的括號

LeetCode-020-有效的括號

有效的括號

題目描述:給定一個只包括 '(',')','{','}','[',']' 的字串 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("()[]{}"));
    }
}

【每日寄語】每個睡醒後的早晨都是一件禮物,把每個開心後的微笑當成一個習慣,美好的一天從現在開始。