网站建设与维护本科教材,网页设计程序,网上购物都有哪些网站,做网站英文编辑有前途71. 简化路径
给你一个字符串 path #xff0c;表示指向某一文件或目录的 Unix 风格 绝对路径 #xff08;以 / 开头#xff09;#xff0c;请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中#xff0c;一个点#xff08;.#xff09;表示当前目录本身表示指向某一文件或目录的 Unix 风格 绝对路径 以 / 开头请你将其转化为更加简洁的规范路径。
在 Unix 风格的文件系统中一个点.表示当前目录本身此外两个点 .. 表示将目录切换到上一级指向父目录两者都可以是复杂相对路径的组成部分。任意多个连续的斜杠即//都被视为单个斜杠 / 。 对于此问题任何其他格式的点例如...均被视为文件/目录名称。
请注意返回的 规范路径 必须遵循下述格式
始终以斜杠 / 开头。两个目录名之间必须只有一个斜杠 / 。最后一个目录名如果存在不能 以 / 结尾。此外路径仅包含从根目录到目标文件或目录的路径上的目录即不含 . 或 ..。
返回简化后得到的 规范路径 。 示例 1
输入path /home/
输出/home
解释注意最后一个目录名后面没有斜杠。
示例 2
输入path /../
输出/
解释从根目录向上一级是不可行的因为根目录是你可以到达的最高级。示例 3
输入path /home//foo/
输出/home/foo
解释在规范路径中多个连续斜杠需要用一个斜杠替换。示例 4
输入path /a/./b/../../c/
输出/c提示
1 path.length 3000path 由英文字母数字./ 或 _ 组成。path 是一个有效的 Unix 风格绝对路径。 class Solution {public String simplifyPath(String path) {String[]curPathpath.split(/);DequeStringstacknew ArrayDeque();int index0;while(indexcurPath.length){if(...equals(curPath[index])){if(!stack.isEmpty())stack.pollLast();}else if(curPath[index].length()0!..equals(curPath[index]))stack.offerLast(curPath[index]);index;}StringBuffer resnew StringBuffer();if(stack.isEmpty())res.append(/);else{while(!stack.isEmpty()){res.append(/).append(stack.pollFirst());}}return res.toString();}
}