首页 > 其他 > 详细

simplify Path

时间:2016-03-01 00:56:00      阅读:187      评论:0      收藏:0      [点我收藏+]

package cn.edu.xidian.sselab.string;

import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.Stack;

/**
 *
 * @author zhiyong wang
 * title: simplify Path
 * content:
 * Given an absolute path for a file (Unix-style), simplify it.
 *
 * For example,
 * path = "/home/", => "/home"
 * path = "/a/./b/../../c/", => "/c"
 *
 */
public class SimplifyPath {

    //弹出,匹配问题,想到用栈来实现,同时遇到分割问题想到split函数
    //看了Deque源码才发现,只有push() 与pop()方法是stack方法。所以这里可以用做栈
    public String simplifyPath(String path){    
            //下面这两行是等价的
//            Deque<String> stack = new LinkedList<String>();
            Stack<String> stack = new Stack();
            Set set = new HashSet<>(Arrays.asList("..",".",""));//这行代码学习一下
            for(String str : path.split("/")){
                if(str.equals("..") && !stack.isEmpty()) stack.pop();
                else if(!set.contains(str)) stack.push(str);
            }
            String res = "";
            
            while(!stack.isEmpty()){
                res = "/" + stack.pop() + res;
            }
            return res.isEmpty() ? "/" : res;
    }
}

simplify Path

原文:http://www.cnblogs.com/wzyxidian/p/5229322.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!