71. 简化路径

package leetcode;

import java.util.Stack;

public class demo_71 {
    public String simplifyPath(String path) {
        String[] str=path.split("/");
        Stack<String> stack=new Stack<String>();
        Stack<String> sta=new Stack<String>();
        //把地址按"/"进行分割,然后存入一个栈中
        for(String s:str) {
            //防止空栈
            if(stack.empty()) {
                stack.push("/");
            }
            //分割后的空格和"."都舍弃
            if(s.equals(".")||s.equals("")) {
                continue;
            }
            //如果是回退,则弹出顶层
            if(s.equals("..")) {
                stack.pop();
            }
            //否则存入栈中
            else {
                stack.push(s);
            }            
        }
        path="";
        //存入栈的地址是相反的,所以存入另外一个栈进行修正
        while(!stack.empty()) {
            sta.push(stack.pop());
        }
        if(!sta.empty()&&sta.peek().equals("/")) {
            sta.pop();
        }
        while(!sta.empty()) {
            path=path+"/"+sta.pop();
        }
        if(path.equals("")) {path=path+"/";}
        System.out.println(path);
        return path;    
    }
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        demo_71 d71=new demo_71();
        String path="///a/./b/../../c/";
        d71.simplifyPath(path);
    }
}

 

71. 简化路径

上一篇:图片拖动并交换图片


下一篇:MyBatis 如何实现流式查询