Simplify Path


Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/", => "/home"
path = "/a/./b/../../c/", => "/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".
Solution: Use stack to deal with "..". I use the approach in section 7.3 of this page to split the string into tokens for given delimiter.

Another approach is to first copy the string into a c_str, then use strtok.
Or we can directly traverse through the string and check the delimiter. There is no essential difference.

Comments

Popular posts from this blog

Maximum Gap

Binary Tree Maximum Path Sum

[ITint5] Maximum Subarray for a Circular Array