当前位置: 面试刷题>> 最长绝对文件路径 (经典算法题500道)


### 题目描述补充 题目:**最长绝对文件路径** 在一个字符串中,表示文件系统的绝对路径。在这个字符串中,一个点`.`表示当前目录,两个点`..`表示上级目录,单个或多个正斜杠`/`用作目录分隔符。你需要找出并返回最长的绝对文件路径的长度。 假设输入的字符串是合法的,即: - 不会以斜杠`/`结尾。 - 不会在两个目录名之间出现两个连续的斜杠`//`。 - 不会在字符串的开始或结束处出现斜杠`/`(除了字符串为空的情况)。 - 每个文件或目录名只包含小写字母。 ### 示例 输入:`"/a/b/c/d:../../c"` 输出:2 解释:最长的绝对文件路径是`/a`,它的长度为2。 ### PHP 示例代码 ```php function lengthLongestPath($input) { $stack = []; // 用于模拟路径栈 $maxLength = 0; // 使用 / 分割字符串 $paths = explode('/', $input); foreach ($paths as $path) { if ($path === '.' || $path === '') { // 当前目录或空路径,忽略 continue; } elseif ($path === '..') { // 返回上级目录 array_pop($stack); } else { // 添加到当前路径 $currentPath = count($stack) > 0 ? implode('/', $stack) . '/' . $path : $path; $maxLength = max($maxLength, strlen($currentPath)); array_push($stack, $path); } } return $maxLength; } // 测试 echo lengthLongestPath("/a/b/c/d:../../c"); // 输出 2 ``` ### Python 示例代码 ```python def lengthLongestPath(input): stack = [] # 模拟路径栈 maxLength = 0 # 分割字符串 paths = input.split('/') for path in paths: if path == '.' or path == '': # 当前目录或空路径,忽略 continue elif path == '..': # 返回上级目录 stack.pop() if stack else None else: # 添加到当前路径 currentPath = '/'.join(stack + [path]) if stack else path maxLength = max(maxLength, len(currentPath)) stack.append(path) return maxLength # 测试 print(lengthLongestPath("/a/b/c/d:../../c")) # 输出 2 ``` ### JavaScript 示例代码 ```javascript function lengthLongestPath(input) { let stack = []; // 模拟路径栈 let maxLength = 0; // 分割字符串 const paths = input.split('/'); for (let path of paths) { if (path === '.' || path === '') { // 当前目录或空路径,忽略 continue; } else if (path === '..') { // 返回上级目录 stack.pop(); } else { // 添加到当前路径 const currentPath = stack.length > 0 ? `${stack.join('/')}/${path}` : path; maxLength = Math.max(maxLength, currentPath.length); stack.push(path); } } return maxLength; } // 测试 console.log(lengthLongestPath("/a/b/c/d:../../c")); // 输出 2 ``` **码小课**网站中有更多相关内容分享给大家学习,包括但不限于算法题解、数据结构、编程语言基础等,欢迎访问学习。
推荐面试题