题目
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘ ,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
- 左括号必须用相同类型的右括号闭合。
- 左括号必须以正确的顺序闭合。
测试用例
输入:s = “()”
输出:true
输入:s = “(]”
输出:false
输入:s = “([)]”
输出:false
输入:s = “((“
输出:false
输入:s = “(“
输出:false
输入:s = “)”
输出:false
思路
栈模拟,注意出栈时判断栈空;空串;结束后栈还是空的
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
| func isValid(s string) bool { sLen := len(s) if sLen%2==1 || sLen==0{ return false } pairs := map[rune]rune{ '(':')', '[':']', '{':'}', } byteStack := []rune{} for _,char := range s{ if _,ok := pairs[char];ok{ byteStack = append(byteStack,char) }else{ if len(byteStack)==0{ return false } if pairs[byteStack[len(byteStack)-1]] != char{ return false } byteStack = byteStack[:len(byteStack)-1] } } return len(byteStack)==0 }
|