力扣71. 简化路径
题目:
给你一个字符串 path
,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 '/'
开头),请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中,一个点(.
)表示当前目录本身;此外,两个点 (..
) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠(即,'//'
)都被视为单个斜杠 '/'
。 对于此问题,任何其他格式的点(例如,'...'
)均被视为文件/目录名称。
请注意,返回的 规范路径 必须遵循下述格式:
- 始终以斜杠
'/'
开头。 - 两个目录名之间必须只有一个斜杠
'/'
。 - 最后一个目录名(如果存在)不能 以
'/'
结尾。 - 此外,路径仅包含从根目录到目标文件或目录的路径上的目录(即,不含
'.'
或'..'
)。
返回简化后得到的 规范路径 。
示例 1:
输入:path = "/home/" 输出:"/home" 解释:注意,最后一个目录名后面没有斜杠。
示例 2:
输入:path = "/../" 输出:"/" 解释:从根目录向上一级是不可行的,因为根目录是你可以到达的最高级。
示例 3:
输入:path = "/home//foo/" 输出:"/home/foo" 解释:在规范路径中,多个连续斜杠需要用一个斜杠替换。
示例 4:
输入:path = "/a/./b/../../c/" 输出:"/c"
提示:
1 <= path.length <= 3000
path
由英文字母,数字,'.'
,'/'
或'_'
组成。path
是一个有效的 Unix 风格绝对路径。
代码:
1 class Solution { 2 public String simplifyPath(String path) { 3 4 if(path.length()==0||path.length()==1){ 5 return "/"; 6 } 7 //给尾部添/,只样最后的一个路径也可以在循环中处理,同时在最后也要处理掉/ 8 path=path+"/"; 9 10 //路径列表 11 ArrayList<String> arrayList=new ArrayList<>(); 12 StringBuilder sb=new StringBuilder(path); 13 14 int i=0; 15 int t=0; 16 //每次找到/path,分析这个/path是什么 17 while((i=sb.indexOf("/",t+1)) >0){ 18 19 String s=sb.substring(t,i); 20 21 //切到上级目录,就是把当前目录从路径列表删除,arrayList为空,不需要删除 22 if(s.equals("/..")){ 23 if(arrayList.size()!=0){ 24 arrayList.remove(arrayList.size()-1); 25 } 26 t=i; 27 continue; 28 } 29 //为/.是当前目录,直接跳过不用处理 30 if(s.equals("/.")||s.equals("/")){ 31 t=i; 32 continue; 33 } 34 //正常路径,添加到路径列表 35 arrayList.add(s); 36 t=i; 37 } 38 //最后一个/也要放进去 39 arrayList.add(sb.substring(t)); 40 41 String res= String.join("",arrayList); 42 43 44 if(res.length()==0||res.length()==1){ 45 return "/"; 46 } 47 48 if(res.charAt(res.length()-1)=='/'){ 49 return res.substring(0,res.length()-1); 50 } 51 return res; 52 } 53 }
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术