使用kotlin解决这个问题:20. 有效的括号 给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。 示例 1: 输入:s = "()" 输出:true 示例 2: 输入:s = "()[]{}" 输出:true 示例 3: 输入:s = "(]" 输出:false 提示: 1 <= s.length <= 104 s 仅由括号 '()[]{}' 组成 通过次数1,484,852提交次数3,369,113
时间: 2024-01-31 12:03:38 浏览: 87
可以使用栈来解决该问题。遍历字符串s,如果遇到左括号就将其入栈,如果遇到右括号就将栈顶元素出栈并与其进行匹配,如果匹配成功继续遍历,否则返回false。
以下是Kotlin代码实现:
```kotlin
fun isValid(s: String): Boolean {
val stack = Stack<Char>()
for (c in s) {
if (c == '(' || c == '[' || c == '{') {
stack.push(c)
} else {
if (stack.isEmpty()) {
return false
}
val top = stack.pop()
if (c == ')' && top != '(') {
return false
}
if (c == ']' && top != '[') {
return false
}
if (c == '}' && top != '{') {
return false
}
}
}
return stack.isEmpty()
}
```
时间复杂度为O(n),空间复杂度为O(n),其中n为字符串s的长度。
阅读全文