LeetCode 20. Valid Parentheses(有效的括号)

208 阅读1分钟

leetcode.com/problems/va…

Given a string s containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.

An input string is valid if:

  • Open brackets must be closed by the same type of brackets.

  • Open brackets must be closed in the correct order.

Example 1:

Input: s = "()"
Output: true

Example 2:

Input: s = "()[]{}"
Output: true

Example 3:

Input: s = "(]"
Output: false

Example 4:

Input: s = "([)]"
Output: false

Example 5:

Input: s = "{[]}"
Output: true

Constraints:

  • 1 <= s.length <= 104

  • s consists of parentheses only '()[]{}'.

解法一:

使用栈。

class Solution {
    fun isValid(s: String): Boolean {
        val stack = Stack<Char>()
        val map = mutableMapOf(Pair(')','('),Pair('}','{'),Pair(']','['))
        s.forEach { 
            if (it=='('||it=='{'||it=='['){
                stack.push(it)
            }else {
                if (stack.empty()){
                    return false
                }else{
                    val c = stack.pop()
                    if (c!=map[it]){
                        return false
                    }
                }
            }
        }
        return stack.empty()
    }
}