题目描述:具体描述见原题。简单来说就是括号匹配。
解题思路:这个题是栈的最最最最基本用法,按照普通思路解就可以了,具体过程见代码。
具体代码:
func isValid(s string) bool {
if len(s) == 0 {
return true
}
stack := make([]rune, 0) // go里没有原生的栈,用切片代替
for _, v := range s {
if (v == '[') || (v == '(') || (v == '{') {
stack = append(stack, v)
} else if ((v == ']') && len(stack) > 0 && stack[len(stack)-1] == '[') ||
((v == ')') && len(stack) > 0 && stack[len(stack)-1] == '(') ||
((v == '}') && len(stack) > 0 && stack[len(stack)-1] == '{') {
stack = stack[:len(stack)-1]
} else {
return false
}
}
return len(stack) == 0 // 当栈中没有元素的时候,就代表匹配完全成功
}
补充说明:贼困