LeetCode之有效的括号
原创
©著作权归作者所有:来自51CTO博客作者Lucky麒麟的原创作品,请联系作者获取转载授权,否则将追究法律责任
LeetCode之有效的括号
一、题目描述
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
示例1:
示例2:
示例3:
示例4:
示例5:
提示:
- 1 <= s.length <= 104
- s 仅由括号 ‘()[]{}’ 组成
二、解题思路
使用栈,对字符进行入站和出栈的操作,最后栈的指针为0就说明匹配成功!
func IsValid(s string) bool {
left, right, main := "{[(", ")]}", "{}[]()"
stack := make([]string, len(s))
index := 0
for i := 0; i < len(s); i++ {
if strings.Contains(left, string(s[i])) {
stack[index] = string(s[i])
}
if strings.Contains(right, string(s[i])) {
if index <= 0 {
return false
}
temp := stack[index - 1] + string(s[i])
if strings.Contains(main, temp) {
index--
continue
}
}
index++
}
return index == 0
}
执行用时: 0 ms, 在所有 Go 提交中击败了 100.00% 的用户
内存消耗: 2.1 MB, 在所有 Go 提交中击败了 26.30% 的用户
三、链接
题目链接:https://leetcode-cn.com/problems/valid-parentheses/
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/two-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。