71.go 618 B

1234567891011121314151617181920212223242526272829303132333435
  1. package main
  2. import (
  3. "strings"
  4. )
  5. func simplifyPath(path string) string {
  6. strs := strings.Split(path, "/")
  7. res := []string{""}
  8. for _, v := range strs {
  9. // "/./" or "//" => ""
  10. if v == "." || v == "" {
  11. } else if v == ".." {
  12. // "/../" => "/"
  13. // "/d/c/../" => "/d"
  14. if len(res) != 1 {
  15. res = res[:len(res)-1]
  16. }
  17. } else {
  18. // "/c" => "/c"
  19. res = append(res, v)
  20. }
  21. }
  22. // "" => "/"
  23. if len(res) == 1 {
  24. return "/"
  25. }
  26. return strings.Join(res, "/")
  27. }
  28. /* func main() {
  29. fmt.Println(simplifyPath("/c/"))
  30. fmt.Println(simplifyPath("/a/./b/../../c/"))
  31. fmt.Println(simplifyPath("/../../"))
  32. } */