摘要:一組重復(fù)的文件至少包括二個(gè)具有完全相同內(nèi)容的文件。如果,則表示該目錄是根目錄。該輸出是重復(fù)文件路徑組的列表。文件路徑是具有下列格式的字符串示例輸入輸出注最終輸出不需要順序。給定的文件數(shù)量在,個(gè)范圍內(nèi)。
題目地址:
https://leetcode-cn.com/probl...
題目描述:
給定一個(gè)目錄信息列表,包括目錄路徑,以及該目錄中的所有包含內(nèi)容的文件,您需要找到文件系統(tǒng)中的所有重復(fù)文件組的路徑。一組重復(fù)的文件至少包括二個(gè)具有完全相同內(nèi)容的文件。
輸入列表中的單個(gè)目錄信息字符串的格式如下:
"root/d1/d2/.../dm f1.txt(f1_content) f2.txt(f2_content) ... fn.txt(fn_content)"
這意味著有 n 個(gè)文件(f1.txt, f2.txt ... fn.txt 的內(nèi)容分別是 f1_content, f2_content ... fn_content)在目錄 root/d1/d2/.../dm 下。注意:n>=1 且 m>=0。如果 m=0,則表示該目錄是根目錄。
該輸出是重復(fù)文件路徑組的列表。對(duì)于每個(gè)組,它包含具有相同內(nèi)容的文件的所有文件路徑。文件路徑是具有下列格式的字符串:
"directory_path/file_name.txt"
示例 1:
輸入:
["root/a 1.txt(abcd) 2.txt(efgh)", "root/c 3.txt(abcd)", "root/c/d 4.txt(efgh)", "root 4.txt(efgh)"]
輸出:
[["root/a/2.txt","root/c/d/4.txt","root/4.txt"],["root/a/1.txt","root/c/3.txt"]]
注:
最終輸出不需要順序。
您可以假設(shè)目錄名、文件名和文件內(nèi)容只有字母和數(shù)字,并且文件內(nèi)容的長(zhǎng)度在 [1,50] 的范圍內(nèi)。
給定的文件數(shù)量在 [1,20000] 個(gè)范圍內(nèi)。
您可以假設(shè)在同一目錄中沒(méi)有任何文件或目錄共享相同的名稱(chēng)。
您可以假設(shè)每個(gè)給定的目錄信息代表一個(gè)唯一的目錄。目錄路徑和文件信息用一個(gè)空格分隔。
解答:
這一題實(shí)際上就是找重復(fù)文件名,文件名是括號(hào)里的內(nèi)容,只需要把括號(hào)里的內(nèi)容提取出來(lái),存在hashmap中,
hashmap的鍵是文件名,值是文件名對(duì)應(yīng)的路徑的列表(List
java ac代碼:
class Solution { public List> findDuplicate(String[] paths) { List
> ans = new ArrayList(200); HashMap
>map = new HashMap(500); for(String path:paths) { String[] temp = path.split(" "); String root = temp[0]; for(int i = 1;i < temp.length;i++) { int begin = temp[i].indexOf("("); int end = temp[i].lastIndexOf(")"); String name = temp[i].substring(begin+1,end); String s = root+"/"+temp[i].substring(0,begin); if(map.get(name) == null) { List list = new ArrayList(10); list.add(s); map.put(name,list); } else map.get(name).add(s); } } for(Map.Entry > entry:map.entrySet()) if(entry.getValue().size()>1) ans.add(entry.getValue()); return ans; } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/73009.html
Problem Given a list of directory info including directory path, and all the files with contents in this directory, you need to find out all the groups of duplicate files in the file system in terms o...
摘要:圖因此可以成為樹(shù),在所有可能的樹(shù)中,具有最小高度的樹(shù)被稱(chēng)為最小高度樹(shù)。給出這樣的一個(gè)圖,寫(xiě)出一個(gè)函數(shù)找到所有的最小高度樹(shù)并返回他們的根節(jié)點(diǎn)。因此使用一個(gè)數(shù)組代表每個(gè)節(jié)點(diǎn)的入度,若入度為就是葉子節(jié)點(diǎn)。 題目地址:https://leetcode-cn.com/probl...題目描述: 對(duì)于一個(gè)具有樹(shù)特征的無(wú)向圖,我們可選擇任何一個(gè)節(jié)點(diǎn)作為根。圖因此可以成為樹(shù),在所有可能的樹(shù)中,具有最小...
摘要:關(guān)于遞歸這里提一兩點(diǎn)遞歸基本有這幾步遞歸的模板,終止條件,遞歸調(diào)用,邏輯處理。 ?作者簡(jiǎn)介:大家好,我是車(chē)神哥,府學(xué)路18號(hào)的車(chē)神? ?個(gè)人主頁(yè):應(yīng)無(wú)所住而生...
摘要:對(duì)于每個(gè)氣球,提供的輸入是水平方向上,氣球直徑的開(kāi)始和結(jié)束坐標(biāo)。可以射出的弓箭的數(shù)量沒(méi)有限制。弓箭一旦被射出之后,可以無(wú)限地前進(jìn)。我們想找到使得所有氣球全部被引爆,所需的弓箭的最小數(shù)量。解答這是一道區(qū)間覆蓋問(wèn)題,不太好說(shuō)清楚,利用模板即可。 題目地址:https://leetcode-cn.com/probl...題目描述:在二維空間中有許多球形的氣球。對(duì)于每個(gè)氣球,提供的輸入是水平方...
閱讀 1617·2021-11-22 14:45
閱讀 1063·2021-11-17 09:33
閱讀 3322·2021-09-02 09:48
閱讀 970·2019-08-30 15:54
閱讀 2767·2019-08-30 15:53
閱讀 2553·2019-08-30 12:54
閱讀 2241·2019-08-29 12:37
閱讀 2421·2019-08-26 13:58