[leetcode] 71. 簡化路徑
阿新 • • 發佈:2018-07-26
lee i++ 作文件 stack 路徑 charat -c har problem
71. 簡化路徑
維護一個棧,當出現.時不做操作,出現..時棧中彈走一個元素
最後從頭遍歷棧輸出即可
註意,文件名可能是千奇百怪的,超過兩個.(比如...)可認作文件名
註意,
不要相信playgroud提供的main函數!
不要相信playgroud提供的main函數!
不要相信playgroud提供的main函數!
class Solution { public String simplifyPath(String path) { Stack<String> stack = new Stack<>(); int i = 0; while (i < path.length()) { while (i < path.length() && path.charAt(i) == ‘/‘) i++; if (i >= path.length()) break; if (path.charAt(i) == ‘.‘) { if (i + 1 >= path.length()) { break; } if (path.charAt(i + 1) == ‘/‘) { // ./ i++; continue; } if (path.charAt(i + 1) == ‘.‘) { if (i + 2 >= path.length() || path.charAt(i + 2) == ‘/‘) { // ../ i += 2; if (!stack.isEmpty()) { stack.pop(); } continue; } } } // is word StringBuilder word = new StringBuilder(); while (i < path.length() && path.charAt(i) != ‘/‘) { word.append(path.charAt(i)); i++; } stack.push(word.toString()); } StringBuilder ans = new StringBuilder(); if (stack.isEmpty()) { return "/"; } for (String s : stack) { ans.append("/").append(s); } return ans.toString(); } }
[leetcode] 71. 簡化路徑