力扣第71题 简化路径,易理解。

class Solution {
    public String simplifyPath(String path) {
        String[] lu = path.split("/+");//正则,以一个或多个“/”进行切割。
        Stack<String> sta = new Stack<>();
        // System.out.println(Arrays.toString(lu));
        String res = "";
        for(int i = 0;i < lu.length;i++){
            // System.out.println(lu[i]);
            if(lu[i] == ""){
                continue;
            }else if(lu[i].equals(".")){
                continue;
            }else if(lu[i].equals("..")){//返回上一级,就删除最后一个进入栈的元素
                if(!sta.empty()){
                    sta.pop();
                }          
            }else{
                sta.push(lu[i]);//进入栈
            }
            // System.out.println(res);
        }
        //拼接路径
        for(String s: sta){
            res += "/"+s;
        }
        //查看最后一个字符是否为“/”,是就删除。
        int len = res.length();
        if(len > 1 && res.charAt(len-1) == '/'){
            res = res.substring(0, res.length()-1);
        }
        return ("/"+res).replace("///","/").replace("//","/");
    }
}
posted @ 2020-06-02 00:55  tiananboke  阅读(138)  评论(0)    收藏  举报