71. Simplify Path做题报告

Posted aiahtwo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了71. Simplify Path做题报告相关的知识,希望对你有一定的参考价值。

题目链接:

       71. Simplify Path

题目大意:

        简化路径,如果对于‘.‘字符,表明为此目录,对于‘..‘字符,表明为回到此目录上一节点(即:删除上一节点),我们现在需要删除多余的‘/‘字符和‘.‘字符

做题报告:

(1)该题涉及的算法与数据结构与知识点

        Java NIO中的Files类,正则表达式,栈

(2)自己的解答思路+代码+分析时间和空间复杂度

        栈

class Solution {
    public String simplifyPath(String path) {
     String[] strs = path.split("/+");
     Stack<String> stack = new Stack<String>();   
     for(int i = 1;i < strs.length ;i++){
         if(strs[i].equals(".")) continue;
         else if(strs[i].equals("..")){
             if(stack.empty() == false) stack.pop();
         }
         else stack.push("/"+strs[i]);
     }
     if(stack.empty() == true) return "/";
     StringBuilder ans = new StringBuilder();
     while(stack.empty() == false){
         String e = stack.pop();
         ans.insert(0,e);
     }
     return ans.toString();
    }
}

 时间复杂度:O(N)

 空间复杂度:O(N)

(3)大神们的解答思路+代码+分析时间和空间复杂度

第一种:IO流

import java.nio.file.*;
class Solution {
    public String simplifyPath(String path) {
       return Paths.get(path).normalize().toString();
    }
}

第二种:正则表达式

思路:先使用split()分割字符串,清除‘/‘,‘//‘,‘///’等等斜杠字符。

然后处理‘.‘与‘..‘字符,对于‘.‘字符,不记入答案,对于‘..‘字符,如果答案前面有字符串,删除前面一个字符串,对于其他字符,则加入答案。

class Solution {
    public String simplifyPath(String path) {
        String[] strs=path.split("/+");
        ArrayList<String> ans=new ArrayList<>();
        for(int i=1;i<strs.length;i++) {
            if(strs[i].equals(".")) continue;
            else if(strs[i].equals("..")) {
                if(!ans.isEmpty()) ans.remove(ans.size()-1);
            }
            else ans.add("/"+strs[i]);
        }
        if(ans.isEmpty()) return "/";
        String res="";
        for(String e:ans)
            res+=e;
        return res;
    }
}

时间和空间复杂度:

        时间复杂度:O(N)

        空间复杂度:O(N)

第三种:栈

(4)比较自己想的和参考答案的区别

         感受:参考答案更多元化

以上是关于71. Simplify Path做题报告的主要内容,如果未能解决你的问题,请参考以下文章

71. Simplify Path

71. Simplify Path

leetcode 71 Simplify Path

71. Simplify Path

71. Simplify Path

71. Simplify Path