题目
给定一个只包括 ‘(‘,’)’,’{‘,’}’,’[‘,’]’ 的字符串 s ,判断字符串是否有效。
有效字符串需满足:
左括号必须用相同类型的右括号闭合。
左括号必须以正确的顺序闭合。
解法
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 { brakets := []byte(s) stack := make([]byte, len(brakets)) stack[0] = brakets[0] index := 1 for i := 1; i < len(brakets); i++ { if brakets[i] == ')' && index - 1 >= 0 && stack[index - 1] == '(' { index -= 1 continue } if brakets[i] == ']' && index - 1 >= 0 && stack[index - 1] == '[' { index -= 1 continue }
if brakets[i] == '}' && index - 1 >= 0 && stack[index - 1] == '{' { index -= 1 continue }
stack[index] = brakets[i] index += 1 }
return index == 0 }
|