71. Simplify Path
Given an?absolute path?for a file (Unix-style),simplify it. Or in other words,convert it to the?canonical path. In a UNIX-style file system,a period? Note that the returned canonical path must always begin?with a slash? ? Example 1: Input: "/home/"
Output: "/home" Explanation: Note that there is no trailing slash after the last directory name.
Example 2: Input: "/../"
Output: "/" Explanation: Going one level up from the root directory is a no-op,as the root level is the highest level you can go.
Example 3: Input: "/home//foo/"
Output: "/home/foo" Explanation: In the canonical path,multiple consecutive slashes are replaced by a single one.
Example 4: Input: "/a/./b/../../c/"
Output: "/c"
Example 5: Input: "/a/../../b/../c//.//"
Output: "/c"
Example 6: Input: "/a//b////c/d//././/.."
Output: "/a/b/c"
class Solution { public String simplifyPath(String path) { String[] strs = path.split("/"); ArrayList<String> list1 = new ArrayList<String>(); for(int i = 0; i < strs.length; i++){ //将空字符串(由类似这种"/a//c"的字符串产生)和 "." ("."代表当前目录不影响路径)去掉,保存到 list1 if (strs[i].isEmpty() || strs[i].equals(".")) { continue; } list1.add(strs[i]); } ArrayList<String> list2 = new ArrayList<String>(); for(int i = 0; i < list1.size(); i++){ if(list1.get(i).equals("..")){ if(!list2.isEmpty()){ list2.remove(list2.size() - 1); } } else list2.add(list1.get(i)); } String res = String.join("/",list2); res = "/" + res; return res; } } ? 这种题真是索然无味 https://leetcode.wang/leetCode-71-Simplify-Path.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |