package main import ( "strings" ) func simplifyPath(path string) string { strs := strings.Split(path, "/") res := []string{""} for _, v := range strs { // "/./" or "//" => "" if v == "." || v == "" { } else if v == ".." { // "/../" => "/" // "/d/c/../" => "/d" if len(res) != 1 { res = res[:len(res)-1] } } else { // "/c" => "/c" res = append(res, v) } } // "" => "/" if len(res) == 1 { return "/" } return strings.Join(res, "/") } /* func main() { fmt.Println(simplifyPath("/c/")) fmt.Println(simplifyPath("/a/./b/../../c/")) fmt.Println(simplifyPath("/../../")) } */