Simplify Path

描述

Given an absolute path for a file (Unix-style), simplify it.

For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

click to show corner cases.

Corner Cases:

 

 


	Did you consider the case where path = "/../"?
	In this case, you should return "/".
	Another corner case is the path might contain multiple slashes '/' together, such as "/home//foo/".
	In this case, you should ignore redundant slashes and return "/home/foo".


题解

package algorithms

import "strings"

func simplifyPath(path string) string {
	var stack []string
	ss := strings.Split(path, "/")
	for i := range ss {
		s := ss[i]
		switch s {
		case "", ".":
		case "..":
			if len(stack) == 0 {
				continue
			}
			end := len(stack) - 1
			stack = stack[:end]
		default:
			stack = append(stack, s)
		}
	}
	return "/" + strings.Join(stack, "/")
}