LeetCode之有效的括号

一、题目描述

给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:

  1. 左括号必须用相同类型的右括号闭合。
  2. 左括号必须以正确的顺序闭合。
示例1:
输入:s = "()"
输出:true
示例2:
输入:s = "()[]{}"
输出:true
示例3:
输入:s = "(]"
输出:false
示例4:
输入:s = "([)]"
输出:false
示例5:
输入:s = "{[]}"
输出:true

提示:

  • 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
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。