wordpress 多语言 站点,头像在线制作网站,做移动网站优化首页软,网页版微信登录不了怎么解决题目描述
以 Unix 风格给出一个文件的绝对路径#xff0c;你需要简化它。或者换句话说#xff0c;将其转换为规范路径。
在 Unix 风格的文件系统中#xff0c;一个点#xff08;.#xff09;表示当前目录本身#xff1b;此外#xff0c;两个点 #xff08;…#xf…题目描述
以 Unix 风格给出一个文件的绝对路径你需要简化它。或者换句话说将其转换为规范路径。
在 Unix 风格的文件系统中一个点.表示当前目录本身此外两个点 … 表示将目录切换到上一级指向父目录两者都可以是复杂相对路径的组成部分。更多信息请参阅Linux / Unix中的绝对路径 vs 相对路径
请注意返回的规范路径必须始终以斜杠 / 开头并且两个目录名之间必须只有一个斜杠 /。最后一个目录名如果存在不能以 / 结尾。此外规范路径必须是表示绝对路径的最短字符串。
示例 1
输入/home/
输出/home
解释注意最后一个目录名后面没有斜杠。示例 2
输入/../
输出/
解释从根目录向上一级是不可行的因为根是你可以到达的最高级。示例 3
输入/home//foo/
输出/home/foo
解释在规范路径中多个连续斜杠需要用一个斜杠替换。示例 4
输入/a/./b/../../c/
输出/c示例 5
输入/a/../../b/../c//.//
输出/c示例 6
输入/a//bc/d//././/..
输出/a/b/c解法1栈
根据上述路径解析使用栈进行转化
public String simplifyPath(String path) {String[]arr path.split(/);StringBuilder sb new StringBuilder();StackString stack new StackString();for(String str:arr) {if(str.equals(..)) {if(!stack.isEmpty()) {stack.pop();}}else if (..equals(str) || .equals(str)) {}else {stack.add(str);}}while(!stack.isEmpty()) {sb.insert(0, stack.pop()).insert(0, /);}String res sb.toString();return res.isEmpty()?/:res;}