码迷,mamicode.com
首页 > 其他好文 > 详细

[leetcode] Simplify Path

时间:2014-12-25 06:35:23      阅读:155      评论:0      收藏:0      [点我收藏+]

标签:

题目:(Stack, String)

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".
题解:
主要是对路径简化定义的了解:
引用http://www.cnblogs.com/springfor/p/3869666.html

这是一道简化路径的题,路径简化的依据是:

当遇到“/../"则需要返回上级目录,需检查上级目录是否为空。

当遇到"/./"则表示是本级目录,无需做任何特殊操作。 

当遇到"//"则表示是本级目录,无需做任何操作。

当遇到其他字符则表示是文件夹名,无需简化。

当字符串是空或者遇到”/../”,则需要返回一个"/"。

当遇见"/a//b",则需要简化为"/a/b"。

 

根据这些要求,我需要两个栈来解决问题。

先将字符串依"/"分割出来,然后检查每个分割出来的字符串。

当字符串为空或者为".",不做任何操作。

当字符串不为"..",则将字符串入栈。

当字符串为"..", 则弹栈(返回上级目录)。

 

参考别人的答案:
public class Solution {
    public String simplifyPath(String path) {
        if(path==null||path.length()==0)
           return path;
           
        Stack<String> stack = new Stack<String>();
        String [] s = path.split("/");
        
        for (int i=0; i<s.length; i++)
        {
            if(s[i].length()==0||s[i].equals("."))
               continue;
            else if(!s[i].equals(".."))
               stack.push(s[i]);
            else
            {
                if(!stack.isEmpty())
                   stack.pop();
            }
        }
        
        Stack<String> temp = new Stack<String>();
        
        while(!stack.isEmpty())
             temp.push(stack.pop());
             
        StringBuffer result = new StringBuffer();
        
        while(!temp.isEmpty())
            result.append("/"+temp.pop());
    
        if(result.length()==0)
           result.append("/");
           
        return result.toString();
    }
}

 

[leetcode] Simplify Path

标签:

原文地址:http://www.cnblogs.com/fengmangZoo/p/4183797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!