LeetCode | Simplify Path

2014-11-24 11:05:14 · 作者: · 浏览: 0

题目

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

    java自带的split函数,以及Stack迭代器的遍历顺序都完全符合这题的要求。

    代码

    import java.util.Stack;
    
    public class SimplifyPath {
    	public String simplifyPath(String path) {
    		Stack
        
          stack = new Stack
         
          (); String[] array = path.split("/"); for (int i = 0; i < array.length; ++i) { if (array[i].length() == 0 || array[i].equals(".")) { continue; } else if (array[i].equals("..")) { if (!stack.isEmpty()) { stack.pop(); } } else { stack.push(array[i]); } } StringBuilder sb = new StringBuilder("/"); for (String e : stack) { sb.append(e).append("/"); } return sb.length() == 1   sb.toString() : sb.substring(0, sb.length() - 1).toString(); } }