笔试题——Unix路径简化

本文介绍如何简化Unix风格的路径,涉及处理'../', '//', '/./'等特殊情况。通过栈的数据结构,遵循特定规则对路径进行处理,实现路径简化。示例包括'/home/'简化为'/home','/a/./b/../../c/'简化为'/c'。代码实现详述了路径简化的过程。" 96875969,8078768,PAT乙级1073: 多选题计分法解析,"['编程竞赛', '算法', '题目解析']
摘要由CSDN通过智能技术生成

简化Unix风格的路径,需要考虑的包括“/../”,“//”,“/./”等情况


输入描述:

一个字符串,表示Unix风格的路径

输出描述:

简化后的Unix风格的路径


示例1:

输入:"/home/"

输出:"/home"


示例2:

输入:"/a/./b/../../c/"

输出:"/c"


分析:

“..”表示返回路径的上级目录(如果当前是根目录则不处理),“.”表示当前目录。

使用栈来记录路径名。在处理字符串路径的过程中,遵循以下条件:

(1)重复连续的“/”,只需处理一个即可,即跳过重复连续出现的多个“/”;

(2)如果路径名不为“.”或“..”,将记录的字符串入栈;

(3)如果路径名是“..”且栈不为空,则需要出栈,否则无需处理。

在遍历完字符串之后,逐个取出栈中元素,用“/”分隔并拼接起来,注意:取出的元素是从后往前进行拼接的。


代码如下:


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值