什么数据结构有利于维护文件路径?

时间:2018-03-04 20:01:51

标签: python algorithm

我正在处理LeetCode上的"Longest Absolute filepath"问题。这是一个简单的问题,询问"给定目录中最长绝对文件路径的长度是多少?#34;。我的工作解决方案如下。文件目录以字符串形式给出。

def lengthLongestPath(self, input):
    """
    :type input: str, the file directory
    :rtype: int
    """

    current_folder_path = [""] * 40
    longest_file_path_size = 0

    for item in input.split("\n"):

        num_tabs = item.count("\t")
        print num_tabs
        if "." not in item:
            current_folder_path[num_tabs] = item.lstrip("\t")
        else:
            absolute_file_path = "/".join(current_folder_path[:num_tabs] + [item.lstrip("\t")]) 
            print item
            print num_tabs, absolute_file_path, current_folder_path
            longest_file_path_size = max(len(absolute_file_path), longest_file_path_size)

    return longest_file_path_size

这很有效。但请注意,current_folder_path = [""] * 40在线{I}非常不优雅。这是记住当前文件路径的一行。我想知道是否有办法删除它。

1 个答案:

答案 0 :(得分:1)

问题陈述没有解决一些问题。目前还不清楚哪条路径可能对应于字符串

a\n\t\tb

它是a//b还是普通的非法?如果是前者,我们需要将其标准化吗?

我想可以安全地假设这样的路径是非法的。换句话说,路径深度只增加1,current_folder_path实际上就像堆栈一样。您不需要预先初始化它,但只需在num_tabs超出其大小时推送名称,并根据需要弹出。

作为旁注,由于join与当前累积长度成线性关系,整个算法似乎是二次的,这违反了时间复杂度要求。