本文共 1441 字,大约阅读时间需要 4 分钟。
用栈解决路径简化问题的方法
在处理文件路径时,Unix 系统中的点和双点(. 和 ..)具有特定的含义。点(.)表示当前目录,而双点(..)表示上一级目录。因此,我们需要将给定的路径简化为规范路径。
为了简化路径,可以使用栈来模拟目录的层级。每当遇到双点(..)时,栈弹出一个元素,表示返回上一级目录。点(.)则表示当前目录,不需要处理。其他目录名则被压入栈。
具体步骤如下:
import java.util.Stack;import java.util.Scanner;public class Solution { public static String simplifyPath(String path) { String[] parts = path.split("/"); Stackstack = new Stack<>(); for (String part : parts) { if (part.equals("..")) { if (!stack.isEmpty()) { stack.pop(); } } else if (!part.equals(".") && !part.equals(" ") && !part.equals("")) { stack.push(part); } } if (stack.isEmpty()) { return "/"; } StringBuilder result = new StringBuilder(); for (int i = 0; i < stack.size(); i++) { if (i != 0) { result.append('/'); } result.append(stack.get(i)); } return result.toString(); } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println(simplifyPath(scanner.nextLine())); }}
split("/")
将路径分割成各个部分。这种方法简洁高效,能够处理各种复杂路径情况,确保结果是规范且最短的路径。
转载地址:http://rdgr.baihongyu.com/