leetcode:Simplify Path

来源:互联网 发布:淘宝购物怎样微信支付 编辑:程序博客网 时间:2024/06/09 21:04

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



<span style="font-size:18px;">public class Solution {    public String simplifyPath(String path) {        char[] chs = path.toCharArray();        char[] charSta = new char[10000];        int top = 0;        ArrayList<String> wordSta = new ArrayList<>();        for(int i = 0; i < chs.length; ++i){             if(chs[i] == '/'){                if(top != 0){                    String string = new String(charSta, 0, top);                    top = 0;                    if(string.equals("..")){                        if(wordSta.size() != 0) wordSta.remove(wordSta.size() - 1);                    }                    else if(!string.equals(".")){                        wordSta.add(string);                    }                }            }            else{                charSta[top++] = chs[i];            }        }        if(top != 0){            String string = new String(charSta, 0, top);            if(string.equals("..") && wordSta.size() != 0) wordSta.remove(wordSta.size() - 1);            else if(!string.equals(".") && !string.equals("..")) wordSta.add(string);        }        StringBuilder sb = new StringBuilder(1000);                        for(String string : wordSta){            sb.append("/").append(string);        }        if(sb.length() == 0)            sb.append("/");        return sb.toString();    }}</span>


0 0