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
Copy the code

Example 2:

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

Example 3:

Input: s = "(]"
Output: false
Copy the code

Example 4:

Input: s = "([)]"
Output: false
Copy the code

Example 5:

Input: s = "{[]}"
Output: true
Copy the code

Constraints:

  • 1 <= s.length <= 104

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

Solution a:

Use the stack.

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() } }Copy the code