字符串解码
通过此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)
}

Reactions are currently unavailable
字符串解码
通过此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) }