资讯专栏INFORMATION COLUMN

【Leetcode】71. 简化路径

liuchengxu / 626人阅读

摘要:题目给定一个文档的完全路径,请进行路径简化。例如,边界情况你是否考虑了路径的情况在这种情况下,你需返回。此外,路径中也可能包含多个斜杠,如。文化和社会被恐惧所塑造,在将来这无疑也不会消失。

题目

给定一个文档 (Unix-style) 的完全路径,请进行路径简化。

例如,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

边界情况:

你是否考虑了 路径 = "/../" 的情况?
在这种情况下,你需返回 "/" 。
此外,路径中也可能包含多个斜杠 "/" ,如 "/home//foo/" 。
在这种情况下,你可忽略多余的斜杠,返回 "/home/foo" 。

题解

这个题目让我想起了大学数据结构的第一个实验,写一个计算器,包括括号,小数等等情况,当时需要处理的情况比较复杂,而自己也是写得十分丑陋。

有兴趣的同学可以看原博客:
https://blog.csdn.net/hit1110...

回到本题,要处理上面说的各种符号的情况,无非就是向stack中加pop元素还是push元素。

pop : 两个点的时候代表回上一级目录,那么把栈定元素出栈

如果遇到不是点,也不是空格,不是回退到上一级目录,那么进栈

java代码
class Solution {
    public String simplifyPath(String path) {
        Stack stack = new Stack<>();
        String[] p = path.split("/");
        for (int i = 0; i < p.length; i++) {
            if (!stack.empty() && p[i].equals(".."))
                stack.pop();
            else if (!p[i].equals(".") && !p[i].equals("") && !p[i].equals(".."))
                stack.push(p[i]);
        }
        return "/" + String.join("/", stack);
    }
}
python代码
class Solution:
    def simplifyPath(self, path):
        """
        :type path: str
        :rtype: str
        """
        stack = []
        p = path.split("/")
        for i in p:
            if len(stack) > 0 and i == "..":
                stack.pop()
            elif i != "." and i != "" and i != "..":
                stack.append(i)

        return "/" + "/".join(stack)

因为对Python不是超级熟悉,这里踩了一个小小的坑。
python中 != ==是对值的比较,类似于java中的equals (值)
python中的 is, is not 是对对象本身的比较,类似于java中的A == B (指针)

每日英文
Fear has never been a good adviser, neither in our personal lives nor in our society. Cultures and societies that are shaped by fear, will without doubt not get a grip on the future. ‧Angela Merkel 
恐惧从来不是一个好的顾问,不管是在我们的个人生活中,还是在社会中。文化和社会被恐惧所塑造,在将来这无疑也不会消失。
近期热门

【Leetcode】70. 爬楼梯

【Leetcode】69. x 的平方根

【Spring】IOC是啥有什么好处

【Leetcode】67. 二进制求和

一年不是365天,而是8760个小时!————艾力

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

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

相关文章

  • Leetcode71. 简化路径

    摘要:题目给定一个文档的完全路径,请进行路径简化。例如,边界情况你是否考虑了路径的情况在这种情况下,你需返回。此外,路径中也可能包含多个斜杠,如。文化和社会被恐惧所塑造,在将来这无疑也不会消失。 题目 给定一个文档 (Unix-style) 的完全路径,请进行路径简化。 例如,path = /home/, => /homepath = /a/./b/../../c/, => /c 边界情况:...

    afishhhhh 评论0 收藏0
  • leetcode71. Simplify Path

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

    darkerXi 评论0 收藏0
  • 6-9月技术文章汇总

    摘要:分布式的管理和当我在谈论架构时我在谈啥状态码详解无状态协议和请求支持哪些方法分层协议栈有哪些数据结构运用场景说说你常用的命令为什么要有包装类面向对象的特征是啥是啥有什么好处系统设计工程在线诊断系统设计与实现索引背后的数据结构及算法原理软技能 HTTP 【HTTP】分布式session的管理 【HTTP】Cookie和Session 【HTTP】当我在谈论RestFul架构时我在谈啥?...

    miya 评论0 收藏0
  • leetcode 简化路径

    摘要:给定一个文档的完全路径,请进行路径简化。例如,边界情况你是否考虑了路径的情况在这种情况下,你需返回。此外,路径中也可能包含多个斜杠,如。解决的思路很简单,用栈来解决。正常的路径入栈,出栈,忽略 给定一个文档 (Unix-style) 的完全路径,请进行路径简化。 例如, path = /home/, => /home path = /a/./b/../../c/, => /c边界情况:...

    h9911 评论0 收藏0
  • Leetcode PHP题解--D71 788. Rotated Digits

    摘要:题目链接题目分析当一个数字度旋转后,不等于原来的数字,那么我们称它是一个好数字。和旋转后为对方。思路用函数生成到给定数组之间的所有数组。对每一个数字,用和函数处理。对数字,转换成。否则返回,排除当前数字。 D71 788. Rotated Digits 题目链接 788. Rotated Digits 题目分析 当一个数字180度旋转后,不等于原来的数字,那么我们称它是一个好数字。 例...

    CntChen 评论0 收藏0

发表评论

0条评论

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