Middle-题目115:71. Simplify Path

题目原文:
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%

阅读更多
版权声明:完整版Leetcode题解请出门左转https://github.com/cmershen1/leetcode/tree/master/docs https://blog.csdn.net/cmershen/article/details/51548654
个人分类: Leetcode
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭