【leetcode刷题笔记】Simplify Path

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

For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"

Corner Cases:
  • Did you consider the case where path = "/../"?
    In this case, you should return "/".
  • Another corner case is the path might contain multiple slashes '/' together, such as"/home//foo/".
    In this case, you should ignore redundant slashes and return "/home/foo".

题解:
  1. 用split函数将path按照一个或者多个(正则表达式实现)'/'分成不同的字符串存放在数组positions中。
  2. 遍历positions,如果遇到非"..",".",""的字符串,就放入answers列表中;如果遇到".."且answers不为空,就把answers尾部的字符串扔掉。
  3. 最后把answers中的字符串用"/"连接起来,注意在连接后的字符串结尾会多一个"/',可以substring一下result去掉。

代码如下:

复制代码
 1 public class Solution {
 2     public String simplifyPath(String path) {
 3         ArrayList<String> answers = new ArrayList<String>();
 4         String[] positions = path.split("/+");
 5         for(int i = 0;i < positions.length;i++){
 6             if(positions[i].equals("..")){
 7                 if(answers.size() > 0)
 8                     answers.remove(answers.size()-1);
 9             }
10             else if(!positions[i].equals(".") && !positions[i].equals(""))
11             {
12                 answers.add(positions[i]);
13             }
14         }
15         
16         String result = new String("/");
17         for(String s:answers)
18             result += s + "/";
19         
20         if(result.length() > 1)
21             result = result.substring(0,result.length()-1);
22         
23         return result;
24     }
25 }
复制代码

 

posted @   SunshineAtNoon  阅读(253)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
点击右上角即可分享
微信分享提示