71. Simplify Path QuestionEditorial Solution
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; }