leetcode-20

222 阅读1分钟

题目描述:具体描述见原题。简单来说就是括号匹配。

解题思路:这个题是栈的最最最最基本用法,按照普通思路解就可以了,具体过程见代码。

具体代码:

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 // 当栈中没有元素的时候,就代表匹配完全成功
}

补充说明:贼困