32 lines
473 B
Go
32 lines
473 B
Go
package q71
|
|
|
|
import "strings"
|
|
|
|
func simplifyPath(path string) string {
|
|
b := strings.Builder{}
|
|
fields := strings.FieldsFunc(path, func(r rune) bool { return r == '/' })
|
|
|
|
p := 0
|
|
for i := range fields {
|
|
switch fields[i] {
|
|
case ".":
|
|
continue
|
|
case "..":
|
|
p = max(p-1, 0)
|
|
default:
|
|
fields[p] = fields[i]
|
|
p++
|
|
}
|
|
}
|
|
for i := range p {
|
|
b.WriteByte('/')
|
|
b.WriteString(fields[i])
|
|
}
|
|
|
|
if p == 0 {
|
|
return "/"
|
|
}
|
|
return b.String()
|
|
}
|
|
|
|
var _ = simplifyPath
|