最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Go Java算法之簡化路徑實例詳解

 更新時間:2022年09月08日 11:27:41   作者:黃丫丫  
這篇文章主要為大家介紹了Go Java算法之簡化路徑實例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

簡化路徑

給你一個字符串 path ,表示指向某一文件或目錄的 Unix 風格 絕對路徑 (以 '/' 開頭),請你將其轉(zhuǎn)化為更加簡潔的規(guī)范路徑。

在 Unix 風格的文件系統(tǒng)中,一個點(.)表示當前目錄本身;此外,兩個點 (..) 表示將目錄切換到上一級(指向父目錄);兩者都可以是復雜相對路徑的組成部分。

任意多個連續(xù)的斜杠(即,'//')都被視為單個斜杠 '/' 。 對于此問題,任何其他格式的點(例如,'...')均被視為文件/目錄名稱。

請注意,返回的 規(guī)范路徑 必須遵循下述格式:

始終以斜杠 '/' 開頭。

兩個目錄名之間必須只有一個斜杠 '/' 。

最后一個目錄名(如果存在)不能 以 '/' 結(jié)尾。

此外,路徑僅包含從根目錄到目標文件或目錄的路徑上的目錄(即,不含 '.' 或 '..')。

返回簡化后得到的 規(guī)范路徑 。

  • 示例 1:

輸入:path = "/home/"

輸出:"/home"

解釋:注意,最后一個目錄名后面沒有斜杠。

  • 示例 2:

輸入:path = "/../"

輸出:"/"

解釋:從根目錄向上一級是不可行的,因為根目錄是你可以到達的最高級。

  • 示例 3:

輸入:path = "/home//foo/"

輸出:"/home/foo"

解釋:在規(guī)范路徑中,多個連續(xù)斜杠需要用一個斜杠替換。

  • 示例 4:

輸入:path = "/a/./b/../../c/"

輸出:"/c"  

提示:

1 <= path.length <= 3000

path 由英文字母,數(shù)字,'.','/' 或 '_' 組成。

path 是一個有效的 Unix 風格絕對路徑。

方法一:棧(Java)

我們首先將給定的字符串 path 根據(jù) / 分割成一個由若干字符串組成的列表,記為 names。

對于「空字符串」以及「一個點」,我們實際上無需對它們進行處理,因為「空字符串」沒有任何含義,而「一個點」表示當前目錄本身,我們無需切換目錄。

對于「兩個點」或者「目錄名」,我們則可以用一個棧來維護路徑中的每一個目錄名。當我們遇到「兩個點」時,需要將目錄切換到上一級,因此只要棧不為空,我們就彈出棧頂?shù)哪夸?。當我們遇到「目錄名」時,就把它放入棧。

class Solution {
    public String simplifyPath(String path) {
        String[] names = path.split("/");
        Deque<String> stack = new ArrayDeque<String>();
        for (String name : names) {
            if ("..".equals(name)) {
                if (!stack.isEmpty()) {
                    stack.pollLast();
                }
            } else if (name.length() > 0 && !".".equals(name)) {
                stack.offerLast(name);
            }
        }
        StringBuffer ans = new StringBuffer();
        if (stack.isEmpty()) {
            ans.append('/');
        } else {
            while (!stack.isEmpty()) {
                ans.append('/');
                ans.append(stack.pollFirst());
            }
        }
        return ans.toString();
    }
}

時間復雜度:O(N)

空間復雜度:O(N)

方法二:標準庫(Go)

具體的方法思路請看上文中的表述。由于Go本身的標準庫已經(jīng)具備該能力,所以只需調(diào)用標準庫即可完成。

import (
	path2 "path"
)
func simplifyPath(path string) string {
	return path2.Clean(path)
}

時間復雜度:O(N)

空間復雜度:O(N)

以上就是Go Java算法之簡化路徑實例詳解的詳細內(nèi)容,更多關(guān)于Go Java算法簡化路徑的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java輕松使用工具類實現(xiàn)獲取wav時間長度

    Java輕松使用工具類實現(xiàn)獲取wav時間長度

    在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用工具類來獲取一個wav文件的時間長度,感興趣的同學繼續(xù)往下閱讀吧
    2021-10-10
  • Mybatis主配置文件的properties標簽詳解

    Mybatis主配置文件的properties標簽詳解

    這篇文章主要介紹了Mybatis主配置文件的properties標簽,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • 關(guān)于dubbo的超時處理及重試原則

    關(guān)于dubbo的超時處理及重試原則

    這篇文章主要介紹了關(guān)于dubbo的超時處理及重試原則,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • MyBatis查詢結(jié)果resultType返回值類型的說明

    MyBatis查詢結(jié)果resultType返回值類型的說明

    這篇文章主要介紹了MyBatis查詢結(jié)果resultType返回值類型的說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • idea已經(jīng)提交到遠程分支,但需要本地和遠程都回退到某一版本問題

    idea已經(jīng)提交到遠程分支,但需要本地和遠程都回退到某一版本問題

    這篇文章主要介紹了idea已經(jīng)提交到遠程分支,但需要本地和遠程都回退到某一版本問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • JavaMail與Spring整合過程解析

    JavaMail與Spring整合過程解析

    這篇文章主要介紹了JavaMail與Spring整合過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • java+mysql實現(xiàn)登錄和注冊功能

    java+mysql實現(xiàn)登錄和注冊功能

    這篇文章主要為大家詳細介紹了java+mysql實現(xiàn)登錄和注冊功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • MyBatis注解方式之@Update/@Delete使用詳解

    MyBatis注解方式之@Update/@Delete使用詳解

    這篇文章主要介紹了MyBatis注解方式之@Update/@Delete使用詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-11-11
  • Java中的字符串用法小結(jié)

    Java中的字符串用法小結(jié)

    這篇文章主要介紹了Java中的字符串用法,實例總結(jié)了java中關(guān)于字符串操作的各種常用的技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • Mybatis中輸入輸出映射與動態(tài)Sql圖文詳解

    Mybatis中輸入輸出映射與動態(tài)Sql圖文詳解

    這篇文章主要給大家介紹了關(guān)于Mybatis中輸入輸出映射與動態(tài)Sql的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-02-02

最新評論

大田县| 通州区| 黑河市| 朝阳县| 鱼台县| 视频| 辉南县| 成安县| 东乌| 岑巩县| 麻阳| 定襄县| 寻乌县| 定安县| 天津市| 自治县| 扎赉特旗| 杭锦旗| 盐边县| 博乐市| 田阳县| 和静县| 连城县| 家居| 左权县| 抚州市| 北川| 柘荣县| 大同县| 鹤峰县| 隆子县| 济源市| 鹤山市| 什邡市| 汝阳县| 定南县| 馆陶县| 同德县| 安岳县| 栾城县| 台州市|