https://leetcode.com/problems/simplify-path/
根据linux的路径规则,输入一个路径的字符换,可能包含"/../","/./"之类的标示位,最后返回真实的绝对路径
整体的思路,就是string从第一个开始遍历,找两个斜杠中间的路径,两个斜杠中间的路径分为三种情况
1.正确却的路径 例如:/home/work/
2.一个点 例如:/./
3.返回上一级,两个点 例如 /../
List<String> v = new ArrayList<String>();
int i = 0;
while (i < path.length()) {
if (path.charAt(i) == '/' && i < path.length()) {
i++;
continue;
}
int start = i;
while (i < path.length() && path.charAt(i) != '/') {
i++;
}
int end = i;
String s = path.substring(start, end);
if (s.equals("..")) {//此时表明要回退上一级
//按道理,此处要直接讲v的最后一个值pop出来,但是有可能v此时没有值,所以加上判断条件
if (!v.isEmpty()) {
v.remove(v.size() - 1);
}
} else if (s.equals(".")) {
//什么都不干,大家就当无事发生过
} else {
v.add(s);
}
}
if (v.isEmpty()) {
return "/";
}
String res = "";
for (int j = 0; j < v.size(); j++) {
res += "/" + v.get(j);
}
return res;