题意:
解题思路:
思路:1. 先进行分割;2. 为''或者为'.',跳过不处理;=> 为空的情况[/home//foo/]3. 当为".."时,如果栈不为空,则pop栈顶;4. 当不是上面两种情况时,入栈;5. 最后join返回;
PHP代码实现:
class Solution {    /**     * @param String $path     * @return String     */    function simplifyPath($path) {        $res = [];        $path = trim($path, '/');        $pathArr = explode('/', $path);        foreach ($pathArr as $k => $v) {            if ($v == '' || $v == '.') continue;            else if ($v == '..') array_pop($res);            else array_push($res, $v);        }        return '/' . implode('/', $res);    }}
GO代码实现:
func simplifyPath(path string) string {    spath := strings.Split(path, "/")    var stack []string    for i := 0; i < len(spath); i++ {        if spath[i] == "" || spath[i] == "." {            continue        }        if spath[i] == ".." {            if len(stack) > 0 {                stack = stack[0 : len(stack) - 1]            }        } else {            stack = append(stack, spath[i])        }    }    return "/" + strings.Join(stack, "/")}