0071.简化路径

方法一:模拟

时间复杂度 $O(n)$,空间复杂度 $O(n)$。

func simplifyPath(path string) string {
	ans, start, end := []string{}, 0, 0
	for i := 0; i < len(path); i = end + 1 {
		for start = i; start < len(path) && path[start] == '/'; {
			start++
		}
		for end = start; end < len(path) && path[end] != '/'; {
			end++
		}
		subpath := path[start:end]
		if subpath == ".." && len(ans) > 0 {
			ans = ans[:len(ans)-1]
		} else if subpath == "." || subpath == ".." {
			continue
		} else if subpath != "" {
			ans = append(ans, subpath)
		}
	}
	return "/" + strings.Join(ans, "/")
}