add new solutions
This commit is contained in:
parent
886b5e0a8e
commit
67cad91898
47 changed files with 1549 additions and 1 deletions
41
solutions/3/q394/solution.go
Normal file
41
solutions/3/q394/solution.go
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
package q394
|
||||
|
||||
import "strings"
|
||||
|
||||
func decode(s string) (int, string) {
|
||||
advanced := 0
|
||||
number := 0
|
||||
buf := strings.Builder{}
|
||||
|
||||
Loop:
|
||||
for advanced < len(s) {
|
||||
advanced++
|
||||
cur := s[advanced-1]
|
||||
switch {
|
||||
case cur >= '0' && cur <= '9':
|
||||
number = 10*number + int(cur-'0')
|
||||
|
||||
case cur == '[':
|
||||
adv, child := decode(s[advanced:])
|
||||
advanced += adv
|
||||
for range number {
|
||||
buf.WriteString(child)
|
||||
}
|
||||
number = 0
|
||||
|
||||
case cur == ']':
|
||||
break Loop
|
||||
|
||||
default:
|
||||
buf.WriteByte(cur)
|
||||
}
|
||||
}
|
||||
return advanced, buf.String()
|
||||
}
|
||||
|
||||
func decodeString(s string) string {
|
||||
_, ret := decode(s)
|
||||
return ret
|
||||
}
|
||||
|
||||
var _ = decodeString
|
||||
Loading…
Add table
Add a link
Reference in a new issue