1.golang中可以用数组的方式实现简单的栈
//特点:FIFO先进先出
var stack []byte //实现栈
stack = append(stack, s[i]) //进栈,这里如果是字符串可以用[]byte("xxx")...来代替s[i]
//出栈
var value byte
value,stack = stack[len(stack)-1],stack[:len(stack)-1]
2.以leetcode第20题有效的括号为例
package main
import (
"fmt"
)
func isValid(s string) bool {
hashMap := map[byte]byte{')': '(', '}': '{', ']': '['}
var stack []byte
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] == hashMap[s[i]] {
stack = stack[:len(stack)-1]
} else {
return false
}
}
return len(stack) == 0
}
func main() {
//输入数据
s := "()[]{}"
//输出内容
fmt.Println(isValid(s))
}