【LeetCode】Simplify Path 解题报告

【题目】

Given an absolute path for a file (Unix-style), simplify it.

For example,

path = "/home/", => "/home"

path = "/a/./b/../../c/", => "/c"

click to show corner cases.

Corner Cases:

  • 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".

【解析】

题意:简化Unix下的文件路径,包括多余斜杠的去除,当前目录(./)的去除,以及父目录(../)的替代。

题目给的Tags是栈,但我觉得用个队列更方便些,这样简化后的目录就不用倒着生成了。

【Java代码】

public class Solution {
    public String simplifyPath(String path) {
        LinkedList<String> queue = new LinkedList<String>();
        String[] names = path.split("/");

        for (int i = 0; i < names.length; i++) {
            if ("".equals(names[i]) || ".".equals(names[i])) continue;

            if ("..".equals(names[i])) {
                if (!queue.isEmpty()) {
                    queue.pollLast();
                }
            } else {
                queue.add(names[i]);
            }
        }

        StringBuilder newPath = new StringBuilder();
        while (!queue.isEmpty()) {
            newPath.append("/");
            newPath.append(queue.pollFirst());
        }

        if (newPath.length() == 0) return "/";

        return newPath.toString();
    }
}
时间: 2024-07-31 00:54:43

【LeetCode】Simplify Path 解题报告的相关文章

[leetcode]Simplify Path @ Python

原题地址:https://oj.leetcode.com/problems/simplify-path/ 题意: Given an absolute path for a file (Unix-style), simplify it. For example,path = "/home/", => "/home"path = "/a/./b/../../c/", => "/c" click to show corn

LeetCode: Combination Sum 解题报告

Combination Sum Combination Sum Total Accepted: 25850 Total Submissions: 96391 My Submissions Question Solution Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T. The

[LeetCode]LRU Cache, 解题报告

题目 Design and implement a data structure for Least Recently Used (LRU) cache. It should support the following operations: get and set. get(key) - Get the value (will always be positive) of the key if the key exists in the cache, otherwise return -1.

【LeetCode】Subsets 解题报告

[题目] Given a set of distinct integers, S, return all possible subsets. Note: Elements in a subset must be in non-descending order. The solution set must not contain duplicate subsets. For example, If S = [1,2,3], a solution is: [ [3], [1], [2], [1,2,

[LeetCode] Simplify Path(可以不用看)

Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c" Corner Cases: Did you consider the case where path = "/../"? In

LeetCode——Simplify Path

Given an absolute path for a file (Unix-style), simplify it. For example, path = "/home/", => "/home" path = "/a/./b/../../c/", => "/c" click to show corner cases. Corner Cases: Did you consider the case where

LeetCode ZigZag Conversion 解题报告

对输入字符串,做蛇形变化,然后按行输出. https://oj.leetcode.com/problems/zigzag-conversion/ 例如:The string "PAYPALISHIRING"  的蛇形变化如下: P        A           H        N A   P   L    S     I     I   G Y         I            R 最后要求输出的就是:"PAHNAPLSIIGYIR" Write

[Leetcode] Simplify path 简化路径

Given an absolute path for a file (Unix-style), simplify it. For example,path ="/home/", =>"/home"path ="/a/./b/../../c/", =>"/c" click to show corner cases. Corner Cases: Did you consider the case where path 

LeetCode: Palindrome Partitioning 解题报告

Given a string s, partition s such that every substring of the partition is a palindrome. Return all possible palindrome partitioning of s. For example, given s = "aab",Return [    ["aa","b"],    ["a","a",