LeetCode Simplify Path

本文介绍了一个使用Java实现的简化Unix风格文件路径的算法。通过扫描输入路径并利用栈来处理每一部分,当遇到'..'时从栈中弹出元素,最终得到规范化的路径。

Description:

Given an absolute path for a file (Unix-style), simplify it.

Solution:

用scanner和stack处理即可,用"/"作为分割器,然后每次遇到".."就出栈。最后将stack倒序输出即可。

import java.util.*;

public class Solution {
	public String simplifyPath(String path) {
		Scanner scan = new Scanner(path);
		scan.useDelimiter("/");

		String temp;
		Stack<String> stack = new Stack<>();
		while (scan.hasNext()) {
			temp = scan.next();
			if (temp.equals("..")) {
				if (!stack.isEmpty())
					stack.pop();
			} else if (temp.equals(".")) {

			} else if (temp.equals("")) {

			} else {
				stack.add(temp);
			}
		}

		String ans = "";
		while (!stack.isEmpty()) {
			temp = stack.pop();
			if (temp.equals(" "))
				break;
			ans = "/" + temp + ans;
		}
		if (ans.equals(""))
			ans = "/";

		// System.out.println(ans);
		return ans;
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值