leetcode:71. 简化路径

小咪咪 2022-04-10 04:00 386阅读 0赞

题目:

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

例如,
path = “/home/”, => “/home”
path = “/a/./b/…/…/c/”, => “/c”

边界情况:

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

分析:

使用两个栈

代码:

  1. public String simplifyPath(String path) {
  2. Stack<String> stack = new Stack<String>();
  3. path = path.replace("//", "/");
  4. if (path.endsWith("/"))
  5. path = path.substring(0, path.length() - 1);
  6. String[] ss = path.split("/");
  7. for (String s : ss) {
  8. if (s.equals(".") || s.equals("")) {
  9. continue;
  10. } else if (s.equals("..")) {
  11. if (!stack.isEmpty())
  12. stack.pop();
  13. } else {
  14. stack.push(s);
  15. }
  16. }
  17. StringBuilder res = new StringBuilder();
  18. Stack<String> temp = new Stack<String>();
  19. while (!stack.isEmpty())
  20. temp.push(stack.pop());
  21. while (!temp.isEmpty())
  22. res.append("/" + temp.pop());
  23. if (res.length() == 0) {
  24. res.append("/");
  25. }
  26. return res.toString();
  27. }

效率:

在这里插入图片描述

总结:

使用栈,效率有待优化

发表评论

表情:
评论列表 (有 0 条评论,386人围观)

还没有评论,来说两句吧...

相关阅读

    相关 leetcode71. 简化路径 Unix 风格

    以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..

    相关 leetcode 71简化路径

    以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。 在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (..

    相关 71. 简化路径

      > 给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/' 开头),请你将其转化为更加简洁的规范路径。 > > 在 Unix 风格

    相关 LeetCode71简化路径

    71. 简化路径 1. 问题重述 将Unix风格的文件路径简化及合法化 , 防止用户恶意输入路径 > 请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录