[LeetCode] 388. Longest Absolute File Path @ python

一.题目:
给出了一个字符串表示的文件夹目录,现在需要求出最长的文件路径。文件的深度有\t个数标识,文件夹开始和终止有\n标识,有.的是文件否则是文件夹。注意文件路径长度是指拼成的绝对地址的长度,包括切割符/。
Example:

Input: s = "dir\n\tsubdir1\n\t\tfile1.ext\n\t\tsubsubdir1\n\tsubdir2\n\t\tsubsubdir2\n\t\t\tfile2.ext"
Return: 32
Eaplanation: "dir/subdir2/subsubdir2/file2.ext"

二.解题思路:
首先我们肯定需要将这么一大串的输入字符串分解,也就是

inputs = input.split("\n")

然后我们需要建立一个栈并进行更新和维护,栈中的每个元素表示对应的目录深度和到该目录为止的绝对地址长度.然后根据是否含有".“判断该部分是属于文件夹还是文件,若是文件夹则记录该部分的”\t"个数来确定深度更新栈.
代码如下:

class Solution(object):
    def lengthLongestPath(self, input):
        """
        :type input: str
        :rtype: int
        """
        inputs = input.split("\n")
        stack = [(-1,0)]
        max_len = 0
        for sub_str in inputs:
            depth = sub_str.count("\t")
            sub_str = sub_str.replace("\t","")
            while depth <= stack[-1][0]:
                stack.pop()
            if "." not in sub_str:
                stack.append((depth, len(sub_str) + 1 + stack[-1][1]))
            else:
                max_len = max(max_len,len(sub_str) + stack[-1][1])
        return max_len
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值