ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

每日算法-输入Linux中的合法全路径将其格式化

2021-09-26 10:31:53  阅读:288  来源: 互联网

标签:格式化 .. 路径 list 算法 Linux 根目录 index1 目录


Linux系统中,文件全路径以”/”开头和作为分隔符,开头的”/”为根目录,作为分隔符的”/”表示一层目录。

以文件全路径”/a/b/file.c”为例

‘a’为根目录’/’下的子目录

‘b’为目录’a’下的子目录

‘file.c’为目录’/a/b’下的子文件

合法的全路径包含元素

 允许出现多个连续的”/”,与一个”/”等价,例如”////a”表示目录’/a’

允许出现特殊目录 “.” “..” 其中”.”表示当前层次,”..”表示当前层次的父目录(根目录的父目录为根) 格式化的全路径有一下要求:以’/’开头,存在连续的’/’

不存在特殊目录 “.” “..”默认转化为等价目录

不以”/”结尾(根目录除外,根目录的全路径输出为”/”)

比如合法全路径”/a///b/c/../././”的格式化全路径为”/a/b”

预期:输入一个合法全路径,转化并打印其格式化全路径

解题思路:

1.把..替换为*防止误伤

2.把所有的./替换为/    

3.把所有//替换为/直到字符串中没有//

4.用/切割成list。

5.如果存在..(*)的话,且不为第二个,则删除list里面的..和前一个索引对应的值,如果为第二个的话则删除本身即可

6.如果list为空则输出”/”,否则将list里面的值取出来用/拼接就是最后答案了 

 

Python3代码如下:

A=input()
B=A.replace('..','*')
C=B.replace('./','/')
while '//' in C:
    C=C.replace('//','/')
D=C.split('/')
while '*' in D:
    index1=D.index('*')
    if index1 != 0:
        D.remove(D[index1])
        D.remove(D[index1-1])
    else:
        D.remove(D[index1])
E='/'.join(D)
if len(E) == 0 :
    print('/')
else:
    if E[0] != '/':
        print('/'+E)
    else:
        print(E)

 

标签:格式化,..,路径,list,算法,Linux,根目录,index1,目录
来源: https://www.cnblogs.com/sgcm/p/15336880.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有