1. 程式人生 > >LeetCode:20. Valid Parentheses(Easy)

LeetCode:20. Valid Parentheses(Easy)

實現 16px parent 數字 字符串 java 給定 遇到 ray

1. 原題鏈接

https://leetcode.com/problems/valid-parentheses/description/

2. 題目要求

給定一個字符串s,s只包含‘(‘, ‘)‘, ‘{‘, ‘}‘, ‘[‘‘]‘。

合法:形如“()[]“、”{[()]}“

不合法:形如“([)]”、“[[((”

判斷所給字符串s是否合法。

3. 解題思路

對字符串s轉換成字符數字進行遍歷。

利用遇到左半邊字符:‘(‘、‘[‘、‘{‘時,將其對應的右半邊字符進行入棧。遇到不是左半邊字符時進行出棧操作,並對出棧的字符和當前遍歷到的字符進行比較。二者相同,則繼續遍歷,不同則返回false;

最後對棧進行判空操作

,為空則字符串s合法,返回true;否則s不合法,返回false。

4. 代碼實現

import java.util.Stack;

public class ValidParentheses20 {
    public static void main(String[] args) {
        System.out.println(ValidParentheses20.isValid("[(])"));
    }

    public static boolean isValid(String s) {
        Stack<Character> stack = new Stack<>();

        for (char c : s.toCharArray()) {
            if (c == ‘(‘)
                stack.push(‘)‘);
            else if (c == ‘[‘)
                stack.push(‘]‘);
            else if (c == ‘{‘)
                stack.push(‘}‘);
            else if (stack.isEmpty() || stack.pop() != c)
                return false;
        }

        return stack.isEmpty();
    }
}

  

LeetCode:20. Valid Parentheses(Easy)