简化路径
题目链接: https://leetcode.cn/problems/simplify-path
解题思路:
按照/拆分路径字符串,分割成字符串数组
遍历字符串数组,对于不同元素进行不同的操作
如果字符串是
..
则进行出队操作,如果是.
或空格则不动,其他元素均进行入队操作入队出队的顺序按照先进后出的逻辑进行
如果队列长度为0,则不执行出队操作
func simplifyPath(path string) string {
pathList := strings.Split(path, "/")
queue := make([]string, 0)
for _,item:=range pathList{
// ..表示进入上一层目录,移除掉队尾元素
if item==".."{
if len(queue)>0{
queue=queue[:len(queue)-1]
}
}else if item!=""&& item!="."{
// 既不是空格也不是.就入队
queue=append(queue,item)
}
}
return fmt.Sprintf("/%s",strings.Join(queue,"/"))
}
复杂度分析
时间复杂度: 只遍历了一遍字符串,因此时间复杂度为 ,其中 是字符串
s
的长度空间复杂度: 空间复杂度为 ,函数使用了一个长度为 的切片来存储栈。在最坏的情况下,栈的深度可能达到 ,所以空间复杂度为
最后更新于
这有帮助吗?