给你一个字符串 path ,表示指向某一文件或目录的 Unix 风格 绝对路径 (以 ‘/’ 开头),请你将其转化为更加简洁的规范路径。
要求 '/‘开头,不以’/‘结尾;’.‘相当于没有这个路径;两个’.'相当于 返回上一级目录。
比如:/home/ 简化为/home;
/a/./b简化为/a/b
/a/b/… 简化为/a
标签:字符串 栈
/**
* 思路:将每一项分割开,如果是空或者一个点,就跳过;
* 如果是两个点,判断栈中是否还有元素,没有就跳过,有就一个出栈
* 如果是其他元素,进栈就好
* @param path
* @return
*/
public static String simplifyPath(String path){
Stack<String> stack = new Stack<>();
String []items = path.split("/");
for (String item : items) {
if("".equals(item) || ".".equals(item)){
continue;
}
if("..".equals(item)){
if(!stack.isEmpty()){
stack.pop();
}
}
else stack.push(item);
}
return "/" + String.join("/",stack);
}
注意:stack的使用;String的join方法的使用。