Python程序:查找解析后的Unix风格路径


假设我们有一个Unix路径,在一个字符串列表中,我们需要找到它的解析版本。众所周知,在Unix中,“..”表示上级目录,“.”表示停留在当前目录。这里的解析表示对这两个符号的评估,以便我们得到当前所在的最终目录。

所以,如果输入类似于path = ["usr", "..", "usr", ".", "local", "etc", "foo"],那么输出将是['usr', 'local', 'etc', 'foo'],因为该部分表示“/usr/../usr/./local/etc”,解析为“/usr/local/etc/foo”

为了解决这个问题,我们将遵循以下步骤:

  • s := 一个新列表
  • 对于path中的每个元素i,执行以下操作:
    • 如果i与'..'相同,则
      • 如果s不为空,则
        • 从s中删除最后一个元素
    • 否则,当i与'.'不同时,则
      • 在s的末尾插入i
  • 返回s

让我们看看下面的实现,以便更好地理解:

示例

 实时演示

class Solution:
   def solve(self, path):
      s = []
      for i in path:
         if i == '..':
            if len(s) >0:
               s.pop()
            elif i !='.':
               s.append(i)
      return s
ob = Solution()
print(ob.solve(["usr", "..", "usr", ".", "local", "etc", "foo"]))

输入

["usr", "..", "usr", ".", "local", "etc", "foo"]

输出

['usr', 'local', 'etc', 'foo']

更新于: 2020年10月5日

136 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告

© . All rights reserved.