LeetCode-Simplify Path

来源:互联网 发布:教育管理硕士 知乎 编辑:程序博客网 时间:2024/06/05 15:22
作者:disappearedgod
文章出处:http://blog.csdn.net/disappearedgod/article/details/39377785
时间:2014-9-18

题目

Simplify Path

 Total Accepted: 12257 Total Submissions: 61429My Submissions

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

想法


代码

public class Solution {    public String simplifyPath(String path) {        if(path == null || path.length() == 0)            return "";        int l = path.length();        StringBuffer sb = new StringBuffer();        Stack<String> stack = new Stack<String>();        int decrease = 0;        for(int i = 0; i < l; ++i){            if(path.charAt(i) != '/')                sb.append(path.charAt(i));            else{                if(sb.length() != 0)                    stack.push(sb.toString());                sb = new StringBuffer();            }        }        if(sb.length() != 0)            stack.push(sb.toString());                String res ="";        for(int i = stack.size(); i > 0; --i){            String tmp = stack.pop();            if(tmp.equals("..")){                decrease--;            }            else if(tmp.equals(".")){            }            else{                if(decrease < 0)                {                    decrease ++;                }                else{                    if(tmp.length() != 0)                        if(res.length() == 0)                            res = tmp;                        else                            res = tmp + "/" + res;                }            }        }        return "/" + res;    }    }


结果

My Submissions for Simplify Path

Submit TimeStatusRun TimeLanguage3 minutes agoAccepted456 msjava

返回

 LeetCode Solution(持续更新,java>c++)

0 0
原创粉丝点击