资讯专栏INFORMATION COLUMN

[Leetcode] Simplify Path 化简路径

liangzai_cool / 3083人阅读

摘要:栈法复杂度时间空间思路思路很简单,先将整个路径按照分开来,然后用一个栈,遇到时弹出一个,遇到和空字符串则不变,遇到正常路径则压入栈中。注意如果结果为空,要返回一个弹出栈时要先检查栈是否为空代码

Simplify Path

</>复制代码

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

  2. For example,

  3. </>复制代码

    1. path = "/home/", => "/home"
    2. path = "/a/./b/../../c/", => "/c"
栈法 复杂度

时间 O(N) 空间 O(N)

思路

思路很简单,先将整个路径按照/分开来,然后用一个栈,遇到..时弹出一个,遇到.和空字符串则不变,遇到正常路径则压入栈中。

注意

如果结果为空,要返回一个/

弹出栈时要先检查栈是否为空

代码

</>复制代码

  1. public class Solution {
  2. public String simplifyPath(String path) {
  3. Stack stk = new Stack();
  4. String[] parts = path.split("/");
  5. for(String part : parts){
  6. switch(part){
  7. case ".":
  8. case "" :
  9. break;
  10. case "..":
  11. if(!stk.isEmpty()){
  12. stk.pop();
  13. }
  14. break;
  15. default:
  16. stk.push(part);
  17. }
  18. }
  19. StringBuilder sb = new StringBuilder();
  20. if(stk.isEmpty()){
  21. return "/";
  22. }
  23. while(!stk.isEmpty()){
  24. sb.insert(0, "/"+stk.pop());
  25. }
  26. return sb.toString();
  27. }
  28. }

2018/2

</>复制代码

  1. class Solution:
  2. def simplifyPath(self, path):
  3. """
  4. :type path: str
  5. :rtype: str
  6. """
  7. parts = path.split("/")
  8. simplified = []
  9. for part in parts:
  10. if part == "." or part == "":
  11. continue
  12. elif part == "..":
  13. simplified and simplified.pop()
  14. else:
  15. simplified.append(part)
  16. return "/" + "/".join(simplified)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/64631.html

相关文章

  • leetcode71. Simplify Path

    摘要:标题文字简化风格的绝对路径。我们可以首先将所有的内容从中分离出来,然后分别处理。这里我们需要用到堆栈的数据结构。堆栈有很多种实现方式,中的类类都可以实现其功能。我们将读到的路径入栈,根据操作符出栈,最后将栈中剩余的元素组织成路径返回即可。 标题文字 Given an absolute path for a file (Unix-style), simplify it. For exa...

    darkerXi 评论0 收藏0
  • [LeetCode] 71. Simplify Path

    Problem Given an absolute path for a file (Unix-style), simplify it. For example, path = /home/, => /home path = /a/./b/../../c/, => /c path = /a/../../b/../c//.//, => /c //here: b is cancelle...

    superw 评论0 收藏0
  • 71. Simplify Path

    摘要:题目解答的规则如下三种需要跳过的情况当遇到时,需要向前进出来的顺序是反的,所以加的时候,把最新出来的路径加在前面 题目:Given an absolute path for a file (Unix-style), simplify it. For example,path = /home/, => /homepath = /a/./b/../../c/, => /cclick to ...

    EdwardUp 评论0 收藏0
  • [LintCode] Simplify Path [字符串操作]

    摘要:,可以用函数去掉所有,然后多考虑一个中间为空的。关于语句的一个特点我们对和其实都是不做操作,然而,两个可以都,但是不能都不做操作。像这样这样这两个就都会等价于下一个就会出错。 Problem Given an absolute path for a file (Unix-style), simplify it. Example /home/, => /home //去掉末尾的slash...

    leanxi 评论0 收藏0
  • 用Python学数学之Sympy代数符号运算

    摘要:的符号运算如果之前是学数学相关专业了解计算机代数系统,就会对数学符号的运算比较熟悉,而如果之前是程序员,可能会有点不太明白,下面我们就来了解一下。 在我们初、高中和大学近10年的学习时间里,数学一直占据着非常大的分量,但是回忆过去可以发现,我们把大量的时间都花在反复解题、不断运算上,计算方法、运算技巧、笔算能力以及数学公式的记忆仿佛成了我们学习数学的全部。这些记忆和技巧没几年就忘掉了,...

    Jackwoo 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<