码迷,mamicode.com
首页 > 其他好文 > 详细

71. Simplify Path做题报告

时间:2020-01-22 23:35:09      阅读:96      评论:0      收藏:0      [点我收藏+]

标签:字符   思路   tostring   target   sim   for   lis   nio   problem   

题目链接:

       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做题报告

标签:字符   思路   tostring   target   sim   for   lis   nio   problem   

原文地址:https://www.cnblogs.com/Aiahtwo/p/12229849.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!