71. Simplify Path.go

注意strings.FieldsFunc的使用

func simplifyPath(path string) string {
    dirs := strings.FieldsFunc(path, func(s rune) bool {
        if s == '/' {
            return true
        }
        return false
    })
    for i := 0; i < len(dirs); i++ {
        if dirs[i] == "." {
            dirs = append(dirs[:i], dirs[i+1:]...)
            i--
        } else {
            if dirs[i] == ".." {
                if i == 0 {
                    dirs = dirs[1:]
                    i--
                    continue
                }
                dirs = append(dirs[:i-1], dirs[i+1:]...)
                i -= 2
            }
        }
    }
    res := "/"
    for i := 0; i < len(dirs); i++ {
        res += dirs[i]
        if i != len(dirs)-1 {
            res += "/"
        }
    }
    return res
}

你可能感兴趣的:(71. Simplify Path.go)