Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/c"
path = "/a/./b/../c/", => "/a/c"
path = "/a/./b/c/", => "/a/b/c"
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 string SimplifyPath(string path) { List<string> list = new List<string>(); string[] words = path.Split('/'); for(int i = 0; i< words.Count(); i++) { if(words[i]== "" || words[i] == ".") { ; } else if(words[i] == "..") { if(list.Count()>0) list.RemoveAt(list.Count()-1); } else list.Add(words[i]); } string res = ""; foreach( var l in list) { res += "/"+l; } if(res == "") return "/"; return res; }