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()
}
}