[Leetcode] Simplify Path

作者: Transnet2014 | 来源:发表于2014-07-20 16:52 被阅读158次

题目链接https://oj.leetcode.com/problems/simplify-path/

Description

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

For example,

path = "/home/"=> "/home"

path = "/a/./b/../../c/"=> "/c"

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".

算法思想

典型的字符串处理问题,先不想优化的问题,先把逻辑结构和可能性理出来, 提示中已经给了两种可能性,当然结合Unix的特性,可以得出一个流程图,写代码之前划了,弄上来挺麻烦的,就先这么着吧,有这么几种可能性:(以/a/.b/../../c/为例)

1. 根目录是/,到了根目录..还是这个位置

2. 有文件名就能进入这个目录,所以输入a,得到的现在目录为/a/

3. 一个点等于没点,无效的,文件夹名中有点的情况需要再分析;

4. 非根目录中..代表上一级目录;

简单一分析,你就看到了,这里做的是栈操作,后进先出,结果就是栈内元素。

AC代码

https://oj.leetcode.com/submissions/detail/8709406/

关键词

string, stack, regular

相关文章

网友评论

    本文标题:[Leetcode] Simplify Path

    本文链接:https://www.haomeiwen.com/subject/mbestttx.html