题目描述:以 Unix 风格给出一个文件的绝对路径,你需要简化它。或者换句话说,将其转换为规范路径。
在 Unix 风格的文件系统中,一个点(.)表示当前目录本身;此外,两个点 (…) 表示将目录切换到上一级(指向父目录);两者都可以是复杂相对路径的组成部分。
请注意,返回的规范路径必须始终以斜杠 / 开头,并且两个目录名之间必须只有一个斜杠 /。最后一个目录名(如果存在)不能以 / 结尾。此外,规范路径必须是表示绝对路径的最短字符串。
示例1:
输入: “/home/”
输出:“/home” 最后一个目录没有斜杠
示例2:
输入:“/…/”
输出:“/” 从根目录向上一级是不可行的
解题思路
1.将字符串按“/”划分,存入数组
2.如果遇到“…”则将其出栈
3.将栈中剩余字符串以‘/’连接,并返回;如果为空,默认返回/
import sys
class Solution(object):
def simplifyPath(path):
"""
type path: str
:return: str
"""
stack = []
path_array = path.split("/")
res_path = ""
for item in path_array:
if item not in ['', '.', '..']:
stack.append(item)
if item == '..':
if stack:
stack.pop(-1)
if [] == stack:
return '/'
for item in stack:
res_path += '/' + item + ''
return res_path
if __name__ == "__main__":
path = str(sys.stdin.readline().strip())
print(simplifyPath(path))