20. 有效的括号 - 力扣(LeetCode) (leetcode-cn.com)
思路:
1.先将符号的对应关系写入到map中。
2.使用slice模拟栈。
3.遍历字符串,如果发现左符号,就将其写入栈中。
4.如果发现右符号,则去判断栈顶是否为对应的左符号。如果是,则将左符号出栈。如果不是,返回false。
5. 遍历结束后,如果栈中还有元素,则返回false,如果没有元素则返回true。
func isValid(s string) bool { if len(s)%2==1{ return false } sMap:=map[byte]byte{ ')':'(', ']':'[', '}':'{', } stack:=make([]byte,0) for i:=0;i<len(s);i++{ if s[i]=='('||s[i]=='['||s[i]=='{'{ stack = append(stack, s[i]) }else if len(stack)>0 && stack[len(stack)-1]==sMap[s[i]] { stack=stack[:len(stack)-1] }else { return false } } return len(stack)==0 }