力扣面试150 简化路径 栈 模拟

Problem: 71. 简化路径

思路

👩‍🏫 三叶题解

复杂度

时间复杂度: O ( n ) O(n) O(n)

空间复杂度: O ( n ) O(n) O(n)

Code

Java 复制代码
class Solution {
	public String simplifyPath(String path)
	{
		ArrayDeque<String> d = new ArrayDeque<>();
		int n = path.length();
//		从 1 开始 跳过第一个 / 根目录
		for (int i = 1; i < n; i++)// i 表示 / 后面的第一个字母下标
		{
			if (path.charAt(i) == '/')// 重复的 / 直接跳过
				continue;
			int j = i + 1;// j 找到后面的 /
			while (j < n && path.charAt(j) != '/')
				j++;
			String item = path.substring(i, j);// 取出文件名
			if ("..".equals(item))// 回到上一级目录,即把上一个目录去掉
			{
				if (!d.isEmpty())
					d.pollLast();
			} else if (!".".equals(item))// . 则不作处理
			{
				d.addLast(item);// 其他的文件名直接加入栈中
			}
			i = j;
		}
		StringBuilder sb = new StringBuilder();
		while (!d.isEmpty())
		{
			sb.append("/" + d.pollFirst());// 在每个 文件名/目录 前加上 "/"
		}
		return sb.length() == 0 ? "/" : sb.toString();// 特判只有根目录的情况
	}
}
相关推荐
C137的本贾尼10 小时前
Spring AI Alibaba 开箱:国产百炼大模型初体验
java·人工智能·spring
金銀銅鐵11 小时前
[Java] 如何理解 class 文件中字段的 access flags?
java·后端
小短腿的代码世界11 小时前
Qt国际化深度解析:从源码到企业级多语言实践
java·数据库·qt
凌冰_11 小时前
IDEA 集成Claude Code
java·ide
SXJR11 小时前
Java中的Cross-Encoder模型解决方案
java·开发语言
彦为君11 小时前
JavaSE-11-BIO/NIO/AIO(多人聊天室)
java·开发语言·python·ai·nio
Cosolar11 小时前
收藏备用!2026 年所有主流 RAG 开源项目都在这里了
人工智能·面试·llm
计算机安禾11 小时前
【c++面向对象编程】第43篇:可变参数模板(C++11):优雅处理不定长参数
java·开发语言·c++
AI人工智能+电脑小能手11 小时前
【大白话说Java面试题 第69题】【JVM篇】第29题:GC Roots 有哪些?
java·开发语言·jvm·面试
William Dawson11 小时前
【通俗易懂!Spring四大核心注解源码解读:@Configuration、@ComponentScan、@Import、@EnableXXX实战】
java·后端·spring