亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

leetcode71. Simplify Path

darkerXi / 2195人閱讀

摘要:標(biāo)題文字簡(jiǎn)化風(fēng)格的絕對(duì)路徑。我們可以首先將所有的內(nèi)容從中分離出來(lái),然后分別處理。這里我們需要用到堆棧的數(shù)據(jù)結(jié)構(gòu)。堆棧有很多種實(shí)現(xiàn)方式,中的類類都可以實(shí)現(xiàn)其功能。我們將讀到的路徑入棧,根據(jù)操作符出棧,最后將棧中剩余的元素組織成路徑返回即可。

標(biāo)題文字
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.

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

簡(jiǎn)化unix風(fēng)格的絕對(duì)路徑。
這里簡(jiǎn)單說(shuō)一下unix風(fēng)格的路徑:

.表示當(dāng)前文件夾,即不進(jìn)行任何操作

..表示返回上層文件夾,如果已經(jīng)至根目錄,則不進(jìn)行任何操作

/表示路徑的分割線,多個(gè)連續(xù)的/等價(jià)于/

這里我們需要將復(fù)雜的unix路徑,例如/a/./b/../../c/簡(jiǎn)化成最簡(jiǎn)形式/c

思路和代碼

從直觀的角度思考,每當(dāng)路徑上我們遇到具有含義的操作符時(shí),就對(duì)其當(dāng)前的路徑進(jìn)行操作。我們可以首先將所有的內(nèi)容從/中分離出來(lái),然后分別處理。這里我們需要用到堆棧的數(shù)據(jù)結(jié)構(gòu)。堆棧有很多種實(shí)現(xiàn)方式,java中的StackLinkedList類都可以實(shí)現(xiàn)其功能。我們將讀到的路徑入棧,根據(jù)操作符出棧,最后將棧中剩余的元素組織成String路徑返回即可。
代碼如下:

    public String simplifyPath(String path) {
        Stack s = new Stack();
        String[] pathDetail = path.split("/");
        for(int i = 0 ; i < pathDetail.length ; i++){
            //彈出上級(jí)目錄,如果有上級(jí)目錄
            if(pathDetail[i].equals("..")){
                if(s.isEmpty()){
                    continue;
                }
                s.pop();
            //不進(jìn)行任何操作
            }else if(pathDetail[i].equals(".") || pathDetail[i].isEmpty()){
                continue;
            }else{
                s.push(pathDetail[i]);
            }
        }
        if(s.isEmpty()){
            return "/";
        }
        StringBuilder result = new StringBuilder();
        do{
            result.insert(0, s.pop());
            result.insert(0, "/");
        }while(!s.isEmpty());
        return result.toString();
    }

也可以使用鏈表實(shí)現(xiàn):

    public String simplifyPath3(String path) {
        Deque stack = new LinkedList<>();
        Set 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;
    }


想要了解更多開(kāi)發(fā)技術(shù),面試教程以及互聯(lián)網(wǎng)公司內(nèi)推,歡迎關(guān)注我的微信公眾號(hào)!將會(huì)不定期的發(fā)放福利哦~

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/67248.html

相關(guān)文章

  • [LeetCode] 71. Simplify Path

    Problem Given an absolute path for a file (Unix-style), simplify it. For example, path = /home/, => /home path = /a/./b/../../c/, => /c path = /a/../../b/../c//.//, => /c //here: b is cancelle...

    superw 評(píng)論0 收藏0
  • 71. Simplify Path

    摘要:題目解答的規(guī)則如下三種需要跳過(guò)的情況當(dāng)遇到時(shí),需要向前進(jìn)出來(lái)的順序是反的,所以加的時(shí)候,把最新出來(lái)的路徑加在前面 題目:Given an absolute path for a file (Unix-style), simplify it. For example,path = /home/, => /homepath = /a/./b/../../c/, => /cclick to ...

    EdwardUp 評(píng)論0 收藏0
  • [Leetcode] Simplify Path 化簡(jiǎn)路徑

    摘要:棧法復(fù)雜度時(shí)間空間思路思路很簡(jiǎn)單,先將整個(gè)路徑按照分開(kāi)來(lái),然后用一個(gè)棧,遇到時(shí)彈出一個(gè),遇到和空字符串則不變,遇到正常路徑則壓入棧中。注意如果結(jié)果為空,要返回一個(gè)彈出棧時(shí)要先檢查棧是否為空代碼 Simplify Path Given an absolute path for a file (Unix-style), simplify it. For example, path = /...

    liangzai_cool 評(píng)論0 收藏0
  • Leetcode71. 簡(jiǎn)化路徑

    摘要:題目給定一個(gè)文檔的完全路徑,請(qǐng)進(jìn)行路徑簡(jiǎn)化。例如,邊界情況你是否考慮了路徑的情況在這種情況下,你需返回。此外,路徑中也可能包含多個(gè)斜杠,如。文化和社會(huì)被恐懼所塑造,在將來(lái)這無(wú)疑也不會(huì)消失。 題目 給定一個(gè)文檔 (Unix-style) 的完全路徑,請(qǐng)進(jìn)行路徑簡(jiǎn)化。 例如,path = /home/, => /homepath = /a/./b/../../c/, => /c 邊界情況:...

    liuchengxu 評(píng)論0 收藏0
  • Leetcode71. 簡(jiǎn)化路徑

    摘要:題目給定一個(gè)文檔的完全路徑,請(qǐng)進(jìn)行路徑簡(jiǎn)化。例如,邊界情況你是否考慮了路徑的情況在這種情況下,你需返回。此外,路徑中也可能包含多個(gè)斜杠,如。文化和社會(huì)被恐懼所塑造,在將來(lái)這無(wú)疑也不會(huì)消失。 題目 給定一個(gè)文檔 (Unix-style) 的完全路徑,請(qǐng)進(jìn)行路徑簡(jiǎn)化。 例如,path = /home/, => /homepath = /a/./b/../../c/, => /c 邊界情況:...

    afishhhhh 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<