#388. Longest Absolute File Path
解题思路
使用一个数组prefixSum,保存遍历过程中,已知层级的前缀字符串数。
如前缀为aaa/bb/cc/
则prefixSum = [0, 4, 7, 10], 即aaa/的长度,aaa/bb/的长度,aaa/bb/cc/的长度。
在遍历每行数据时:
保存当前行的层级level,也就是\t的数量。
- 如果当前行为文件: 我们只要将当前文件名的长度,加上之前层级的字符串长度就行。
- 如果当前行为文件夹: 如果层级比数组长度大,我们只需在数组后面追加一个新长度; 如果层级比数组长度小,我们只需更新相应的下标为新值就行了。
代码
class Solution:
def lengthLongestPath(self, input: str) -> int:
prefixSum = [0]
res = 0
for s in input.split('\n'):
level = 0 # 层级计数
while s[level] == '\t':
level += 1
slen = len(s) - level
if '.' in s: # 如果是文件,就比较结果
res = max(res, prefixSum[level] + slen)
continue
else: # 如果是文件夹,将当前层级的字符串数目(包含末尾斜杆)保存。
if level + 1 < len(prefixSum):
prefixSum[level+1] = prefixSum[level] + slen + 1
else:
prefixSum.append(prefixSum[-1] + slen + 1)
return res
本文介绍如何使用Python实现一个算法,通过计算层级和前缀字符串长度,找出给定文件系统中路径最长的绝对文件名。关键步骤包括维护层级计数和数组prefixSum以记录已知层级的文件数量。代码实例展示了如何遍历输入并根据文件类型调整路径长度。

被折叠的 条评论
为什么被折叠?



