Решение на Нормализация на пътища от Мартин Ангелов

Обратно към всички решения

Към профила на Мартин Ангелов

Резултати

  • 10 точки от тестове
  • 0 бонус точки
  • 10 точки общо
  • 8 успешни тест(а)
  • 0 неуспешни тест(а)

Код

package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(parsePath("python/movies/episode1/../../lectures/lecture1/examples/../code/../../../mostImportant/MonthyPython/quotes/.."))
}
func parsePath(path string) string {
parts := strings.Split(path, "/")
var parsedParts []string
for _, part := range parts {
if part == "." {
continue
}
if part == ".." && len(parsedParts) > 0 {
parsedParts = parsedParts[:len(parsedParts)-1]
} else if part != ".." {
parsedParts = append(parsedParts, part)
}
}
parsedString := strings.Join(parsedParts, "/")
if len(parsedString) == 0 || parsedString[0] != '/' {
parsedString = "/" + parsedString
}
return parsedString
}

Лог от изпълнението

PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s
PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s
PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s
PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s
PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s
PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s
PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s
PASS
ok  	_/tmp/d20131015-29033-p6d41d	0.011s

История (2 версии и 2 коментара)

Мартин обнови решението на 09.10.2013 20:58 (преди над 4 години)

+func parsePath(path string) string {
+ parts := strings.Split(path, "/")
+ var parsedParts []string
+ for _, part := range parts {
+ if part == "." {
+ continue
+ }
+ if part == ".." && len(parsedParts) > 0 {
+ parsedParts = parsedParts[:len(parsedParts)-1]
+ } else if part != ".." {
+ parsedParts = append(parsedParts, part)
+ }
+ }
+ parsedString := strings.Join(parsedParts, "/")
+ if len(parsedString) == 0 || parsedString[0] != '/' {
+ parsedString = "/" + parsedString
+ }
+ return parsedString
+}

Мартин обнови решението на 12.10.2013 09:08 (преди над 4 години)

+package main
+
+import (
+ "fmt"
+ "strings"
+)
+
+func main() {
+ fmt.Println(parsePath("python/movies/episode1/../../lectures/lecture1/examples/../code/../../../mostImportant/MonthyPython/quotes/.."))
+}
func parsePath(path string) string {
parts := strings.Split(path, "/")
var parsedParts []string
for _, part := range parts {
if part == "." {
continue
}
if part == ".." && len(parsedParts) > 0 {
parsedParts = parsedParts[:len(parsedParts)-1]
} else if part != ".." {
parsedParts = append(parsedParts, part)
}
}
parsedString := strings.Join(parsedParts, "/")
if len(parsedString) == 0 || parsedString[0] != '/' {
parsedString = "/" + parsedString
}
return parsedString
}