[Leetcode] Simplify Path

题目链接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

    原文作者:Transnet2014
    原文地址: https://www.jianshu.com/p/f4bc13dbe9c0
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞