Решение на Нормализация на пътища от Александър Иванов

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

Към профила на Александър Иванов

Резултати

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

Код

package main
import "strings"
func parsePath(path string) string {
directories := strings.Split(path, "/")
var (
backSteps int = 0
resultPath string = ""
)
for i := len(directories) - 1; i >= 0; i-- {
switch directories[i] {
case "", ".":
case "..":
backSteps++
default:
if backSteps > 0 {
backSteps--
} else {
resultPath = "/" + directories[i] + resultPath
}
}
}
return resultPath + "/"
}

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

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

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

Александър обнови решението на 13.10.2013 12:28 (преди над 4 години)

+package main
+
+import "strings"
+
+func parsePath(path string) string {
+ directories := strings.Split(path, "/")
+
+ var (
+ backSteps int = 0
+ resultPath string = ""
+ )
+
+ for i := len(directories) - 1; i >= 0; i-- {
+ switch directories[i] {
+ case "", ".":
+ case "..":
+ backSteps++
+ default:
+ if backSteps > 0 {
+ backSteps--
+ } else {
+ resultPath = "/" + directories[i] + resultPath
+ }
+ }
+ }
+
+ return resultPath + "/"
+}