• Simplify Path


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

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

    click to show corner cases.

    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".

    ref:http://fisherlei.blogspot.com/2013/01/leetcode-simplify-path.html

    [解题思路]

    利用栈的特性,如果sub string element

    1. 等于“/”,跳过,直接开始寻找下一个element

    2. 等于“.”,什么都不需要干,直接开始寻找下一个element

    3. 等于“..”,弹出栈顶元素,寻找下一个element

    4. 等于其他,插入当前elemnt为新的栈顶,寻找下一个element

    最后,再根据栈的内容,重新拼path。这样可以避免处理连续多个“/”的问题。

    public class Solution {
        public String simplifyPath(String path) {
            ArrayList<String> sta=new ArrayList<String>();
            String[] paths=path.split("/");
            for(int i=0;i<paths.length;i++){
                String cur=paths[i];
                switch(cur){
                    case "/":break;
                    case ".":break;
                    case "":break;
                    case "..":
                        if(sta.size()!=0){
                            sta.remove(sta.size()-1);
                        }
                        break;
                    default:
                        sta.add(cur);
                }
            }
            
            StringBuffer ret=new StringBuffer();
            for(int i=0;i<sta.size();i++){
                ret.append("/");
                ret.append(sta.get(i));
            }
            
            if(sta.size()==0)return "/";
            return ret.toString();
        }
    }
  • 相关阅读:
    【西瓜书】周志华《机器学习》学习笔记与习题探讨(一)
    01-线性回归算法
    NumPy 字符串函数
    Numpy函数分类
    Excel一对多查询(index+small+if)
    支付机构MRC模
    数据分析方法论
    窗口函数/解析函数
    数据分析
    底层逻辑
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3552545.html
Copyright © 2020-2023  润新知