leetcode388
题目要求
1 | Suppose we abstract our file system by a string in the following manner: |
要求从String字符串中找到最长的文件路径。这里要注意,要求的是文件路径,文件夹路径不予考虑。文件和文件夹的区别在于文件中一定包含.。
这里\n代表根目录平级,每多一个\t就多一层路径,这一层路径都是相对于当前的上层路径的。
以dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext为例
dir为第0层目录\n\tsubdir1代表subdir1是第一层目录,且其是当前父目录dir的子目录\n\t\n\tsubdir2代表subdir2为第一层目录,且其是当前父目录dir的子目录,此时的一级父目录从subdir1更新为subdir2\n\t\tfile.ext代表tfile.ext为二级目录,位于当前一级目录subdir2之下
思路和代码
综上分析,我们可以记录一个信息,即当前每一级的目录究竟是谁,每次只需要保留当前一级目录已有的路径长度即可。还是拿上面的例子dir\n\tsubdir1\n\tsubdir2\n\t\tfile.ext:
1 | 遍历完dir: 0级目录长度为3 |
代码如下:
1 | public int lengthLongestPath(String input) { |