Linux 路径精简
给定一个 Linux 下的路径表达式,各个目录之间用 “/” 进行分割,给出精简后的路径。
例:
输入:$a/b/c/.././../e/f$
输出:$a/e/f$
思路:利用栈,遇到 “..” 出栈,除了 “.” 之外的字符入栈,然后依次出栈
1 void pathChange(String str) { 2 if (str == null || str.length() == 0) { 3 return; 4 } 5 Stack<String> stack = new Stack<>(); 6 if (str.charAt(0) == '/') { 7 StringBuilder s1 = new StringBuilder(str); 8 s1.deleteCharAt(0); 9 str = s1.toString(); 10 } 11 String[] pathArr = str.split("/"); 12 13 System.out.println(str); 14 for (String tmp : pathArr) { 15 if (tmp.equals("..") && !stack.isEmpty()) { 16 stack.pop(); 17 } else if (!tmp.equals(".")) { 18 stack.push(tmp); 19 } 20 } 21 22 StringBuilder res = new StringBuilder(""); 23 while (!stack.isEmpty()) { 24 res.append("/"); 25 res.append(stack.pop()); 26 } 27 System.out.println(res.reverse().toString()); 28 }