讨论/题目交流/[22. 括号生成]为什么在“执行代码”处指定“输入为1”,输出与预期结果相同的。而,点击“提交”之后却显示当输入为1时,结果错误? /
[22. 括号生成]为什么在“执行代码”处指定“输入为1”,输出与预期结果相同的。而,点击“提交”之后却显示当输入为1时,结果错误?

Golang代码:

func generateParenthesis(n int) []string {
    if n==0 {
        return []string{""}
    }
    s := make([]rune,2*n)
    recurse(s,'(',0)
    return result
}
var result []string
func recurse(s []rune, c rune, idx int){
    s[idx]=c
    idx++
    if idx==len(s) {
        //判断是否符合
        //符合保存
        if isValid(string(s)) {
            result=append(result,string(s))
        }
        return
    }
    recurse(s,'(',idx)
    recurse(s,')',idx)
}
func isValid(s string) bool {
    stack := make([]byte,0)
    dict := map[byte]byte{
        ')':'(',
        '}':'{',
        ']':'[',
    }
    for i:=0; i<len(s); i++ {
        if char,ok := dict[s[i]]; !ok {
            stack = append(stack,s[i])
        }else{
            if  len(stack)!=0&&stack[len(stack)-1]==char {
                stack = stack[:len(stack)-1]
            }else {
                return false
            }
        }
    }
    if len(stack)!=0 {
        return false
    }
    return true
}

执行代码处测试:
image.png
提交之后显示错误:
image.png

1