《死亡細胞》銷量超600萬 2022年Q1推出新DLC
阿新 • • 發佈:2021-12-01
給你一個字串 path ,表示指向某一檔案或目錄的Unix 風格 絕對路徑 (以 '/' 開頭),請你將其轉化為更加簡潔的規範路徑。
在 Unix 風格的檔案系統中,一個點(.)表示當前目錄本身;此外,兩個點 (..)表示將目錄切換到上一級(指向父目錄);兩者都可以是複雜相對路徑的組成部分。任意多個連續的斜槓(即,'//')都被視為單個斜槓 '/' 。 對於此問題,任何其他格式的點(例如,'...')均被視為檔案/目錄名稱。
請注意,返回的 規範路徑 必須遵循下述格式:
始終以斜槓 '/' 開頭。
兩個目錄名之間必須只有一個斜槓 '/' 。
最後一個目錄名(如果存在)不能 以 '/' 結尾。
此外,路徑僅包含從根目錄到目標檔案或目錄的路徑上的目錄(即,不含 '.' 或 '..')。
返回簡化後得到的 規範路徑 。
來源:力扣(LeetCode)
連結:https://leetcode-cn.com/problems/simplify-path
著作權歸領釦網路所有。商業轉載請聯絡官方授權,非商業轉載請註明出處。
心之所向,素履以往 生如逆旅,一葦以航import java.util.ArrayList; import java.util.Scanner; import java.util.Stack; class Solution { public static String simplifyPath(String path) { if (path == null || path.length() == 0) { return path; } String[] words = path.split("[/]{1,}"); Stack<String> stack = new Stack<>(); for (String word : words) { if (!"".equals(word) && !".".equals(word)) { if (word.equals("..")) { if (!stack.isEmpty()) { stack.pop(); } } else { stack.push(word); } } } return "/" + String.join("/", new ArrayList<>(stack)); } public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.hasNext()) { System.out.println(simplifyPath(in.next())); } } }