题目
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
注意空字符串可被认为是有效字符串。
示例
输入: "()" 输出: true
解析
这是一个典型的栈的问题,遍历字符串,遇到左边的进栈,遇到右边的和左边的匹配的话两个就出栈,为了方便比较,将左右对应关系存到map中
答案
//len1 := len(s)
//如果不是偶数,就返回false
//if len1 % 2 != 0 {
// return false
//}
//存储map
m1 := make(map[byte]byte)
m1[')'] = '('
m1['}'] = '{'
m1[']'] = '['
//创建一个切片作为栈进行存数据
str := []byte{}
for _,v := range s {
if m1[byte(v)] > 0 {
if len(str) == 0 || str[len(str) - 1] != m1[byte(v)] {
return false
}
str = str[:len(str) - 1]
}else{
str = append(str,byte(v))
}
}
return len(str) == 0