关闭

Middle-题目115:71. Simplify Path

59人阅读 评论(0) 收藏 举报
分类:

题目原文:
Given an absolute path for a file (Unix-style), simplify it.

For example,
path = “/home/”, => “/home”
path = “/a/./b/../../c/”, => “/c”
题目大意:
化简一个Unix格式的路径。
题目分析:
显然用堆栈。根据hint里面提到的边界情况做以下处理:
(1) 对多个/和.不作处理
(2) 对..则弹出栈顶元素,如果栈空(已经是根路径)则不处理
(3) 将两个/之间的子串压入堆栈
最后遍历栈,组成最后的目录。如果栈空则输出’/’。
源码:(language:java)

public class Solution {
    public String simplifyPath(String path) {
        String[] paths = path.split("/");
        List<String> list = new LinkedList<String>();
        Stack<String> stack = new Stack<String>();
        for (String str : paths) {
            if (str.equals(""))
                continue;
            else if (str.equals("..")) {
                if(!stack.isEmpty())
                    stack.pop();
                continue;
            }
            else if (str.equals("."))
                continue;
            else
                stack.add(str);
        }
        String result = "";
        for(int i = 0;i<stack.size();i++) {
            result=result+"/"+stack.get(i);
        }
        if(result=="")
            result+="/";
        return result;
    }
}

成绩:
12ms,beats 44.53%,众数12ms,18.84%

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:56875次
    • 积分:3213
    • 等级:
    • 排名:第10664名
    • 原创:270篇
    • 转载:53篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论