zoukankan      html  css  js  c++  java
  • 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();
        }
    }
  • 相关阅读:
    面向对象编程的三大特征: 封装、继承、多态
    CDH和HDP对比
    mapreduce、spark、tez区别
    minio原理和使用
    HDP、CDH、CDP升级
    常用的分布式文件系统
    linux平台下防火墙iptables原理(转)
    php 1207
    php 1209
    php 1130
  • 原文地址:https://www.cnblogs.com/RazerLu/p/3552545.html
Copyright © 2011-2022 走看看