【LeetCode】Simplify Path实现(Java版)

描述
Given an absolute path for a file (Unix-style), simplify it.
For example,
path = "/home/", => "/home"

path = "/a/./b/../../c/", => "/c"

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".


package String;

import java.util.Vector;

public class SimplifyPath {
	public static String Solution(String path){
		Vector<String> dirs = new Vector<String>();;
		for(int i = 0; i != path.length()-1;){
			++i;
			int j = path.indexOf("/", i);
			
			if(j == -1){
				if(!(path.substring(i).equalsIgnoreCase("..")))
					dirs.add(path.substring(i));
				break;
			}
			String dir = path.substring(i,j);
			
			if(!dir.equalsIgnoreCase("") && !dir.equalsIgnoreCase(".")){
				if(dir.equalsIgnoreCase("..")){
					if(dirs.size() != 0)
						dirs.remove(dirs.size()-1);
				}else
					dirs.add(dir);
			}
			i = j;
		}
		String out = "";
		if(dirs.size() == 0){
			out = "/";
		}else{
			for(String dir:dirs){
				out = out + "/" + dir;
			}
		}
		return out;
	}
	
	public static void main(String[] args){
		String path = "/../";
		String path1 = "/home//foo/";
		String path2 = "/home/foo/";
		String path3 = "/home/foo";
		String path4 = "/home/";
		String path5 = "/";
		String path6 = "/..";
		String path7 = "/a/./b/../../c/";
		String path8 = "/a/./b/../c/";
		System.out.println(Solution(path));
		System.out.println(Solution(path1));
		System.out.println(Solution(path2));
		System.out.println(Solution(path3));
		System.out.println(Solution(path4));
		System.out.println(Solution(path5));
		System.out.println(Solution(path6));
		System.out.println(Solution(path7));
		System.out.println(Solution(path8));
	}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值