Simplify Path
题目地址:
https://leetcode.com/problems/simplify-path/#/description
题目:
解题思路:
这里我们需要deque来将路径的文件名储存。因为用 string的split方法的时候,当第一个是/, split的结果的第一个是空"",所以set里面需要有"". link: https://discuss.leetcode.com/topic/7675/java-10-lines-solution-with-stack
代码:
https://leetcode.com/problems/simplify-path/#/description
题目:
Given an absolute path for a file (Unix-style), simplify it.
For example,
path =
path =
Corner Cases:path =
"/home/", => "/home"path =
"/a/./b/../../c/", => "/c"- Did you consider the case where path =
"/../"?
In this case, you should return"/". - Another corner case is the path might contain multiple slashes
'/'together, such as"/home//foo/".
In this case, you should ignore redundant slashes and return"/home/foo".
解题思路:
这里我们需要deque来将路径的文件名储存。因为用 string的split方法的时候,当第一个是/, split的结果的第一个是空"",所以set里面需要有"". link: https://discuss.leetcode.com/topic/7675/java-10-lines-solution-with-stack
代码:
public String simplifyPath(String path) { Deque<String> stack = new LinkedList<>(); Set<String> skip = new HashSet<>(Arrays.asList("..",".","")); for (String dir : path.split("/")) { if (dir.equals("..") && !stack.isEmpty()) stack.pop(); else if (!skip.contains(dir)) stack.push(dir); } String res = ""; for (String dir : stack) res = "/" + dir + res; return res.isEmpty() ? "/" : res; }

Comments
Post a Comment