greyireland / algorithm-pattern

算法模板,最科学的刷题方式,最快速的刷题路径,你值得拥有~
MIT License
15.16k stars 2.59k forks source link

栈的部分解答有误 #53

Open bourne-3 opened 1 year ago

bourne-3 commented 1 year ago

字符串解码

通过此rep的模版无法通过,具体算法如下:

func decodeString(s string) string {
    if len(s) == 0 {
        return ""
    }
    stack := make([]byte, 0)
    for i := 0; i < len(s); i++ {
        switch s[i] {
        case ']':
            temp := make([]byte, 0)
            for len(stack) != 0 && stack[len(stack)-1] != '[' {
                v := stack[len(stack)-1]
                stack = stack[:len(stack)-1]
                temp = append(temp, v)
            }
            // pop '['
            stack = stack[:len(stack)-1]
            // pop num
            idx := 1
            for len(stack) >= idx && stack[len(stack)-idx] >= '0' && stack[len(stack)-idx] <= '9' {
                idx++
            }
            // 注意索引边界
            num := stack[len(stack)-idx+1:]
            stack = stack[:len(stack)-idx+1]
            count, _ := strconv.Atoi(string(num))
            for j := 0; j < count; j++ {
                // 把字符正向放回到栈里面
                for j := len(temp) - 1; j >= 0; j-- {
                    stack = append(stack, temp[j])
                }
            }
        default:
            stack = append(stack, s[i])

        }
    }
    return string(stack)
}
image
scutuyu commented 1 year ago

您发的邮件我已收到,祝你生活愉快!

bourne-3 commented 1 year ago
image

https://leetcode.cn/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/?envType=study-plan&id=lcof&plan=lcof&plan_progress=f7ebe53

两个栈实现队列的也有误