以后什么难度都用'Python'写了,要不感觉Python都没机会用,本周题目难度级别'Medium'
题目:给你一个路径,要求你返回一个优化后的路径。eg: "/a/./b/../../c/", => "/c"
思路:其实一开始题目理解的有点问题,这题就一个原则,遇到..
就回到上一级,.
就是当前目录下,还记得cd ..
么,一样的。知道了这个原则再来就很容易了,直接看我的代码吧:
class Solution:
def simplifyPath(self, path):
"""
:type path: str
:rtype: str
"""
# 有的小伙伴是定义[]为容器
result = ''
# 遍历
for i in path.split('/'):
# 不是这三个就把目录加进去
if i != '.' and i != '..' and i != '':
result = result + '/' + i
elif i == '..':
# 遇到..就退到上一个目录
result = result.rstrip(result.split('/')[-1])
result = result.rstrip('/')
# 如果是空目录就返回'/'
if result == '': return '/'
return result
效率也不错,不过比result为[]的效率低一些,如果定义成[]则需要再次遍历,或进行格式转换。
网友评论