給定乙個目錄資訊列表,包括目錄路徑,以及該目錄中的所有包含內容的檔案,您需要找到檔案系統中的所有重複檔案組的路徑。一組重複的檔案至少包括二個具有完全相同內容的檔案。
輸入列表中的單個目錄資訊字串的格式如下:
「root/d1/d2/…/dm f1.txt(f1_content) f2.txt(f2_content) … fn.txt(fn_content)」
這意味著有 n 個檔案(f1.txt, f2.txt … fn.txt 的內容分別是 f1_content, f2_content … fn_content)在目錄 root/d1/d2/…/dm 下。注意:n>=1 且 m>=0。如果 m=0,則表示該目錄是根目錄。
該輸出是重複檔案路徑組的列表。對於每個組,它包含具有相同內容的檔案的所有檔案路徑。檔案路徑是具有下列格式的字串:
「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」]]
注:最終輸出不需要順序。
您可以假設目錄名、檔名和檔案內容只有字母和數字,並且檔案內容的長度在 [1,50] 的範圍內。
給定的檔案數量在 [1,20000] 個範圍內。
您可以假設在同一目錄中沒有任何檔案或目錄共享相同的名稱。
您可以假設每個給定的目錄資訊代表乙個唯一的目錄。目錄路徑和檔案資訊用乙個空格分隔。
class solution
//建立map存放檔名和對應的目錄
map> map = new hashmap<>();
//遍歷集合,取出檔名和目錄
string strs = null;
listlist = null;
string content = "";
for(int i=0;i();
list.add(strs[0]+"/"+strs[j].substring(0,strs[j].length()-content.length()-2));
map.put(content,list);
}else }}
//取出結果放在結果集中
list> result = new arraylist<>();
setkeys = map.keyset();
for (string key : keys )
}return result;
}public static string getcontent(string filename)
return filename.substring(index+1,filename.length()-1);
}}
leetcode 609 在系統中查詢重複檔案
目錄給定乙個目錄資訊列表,包括目錄路徑,以及該目錄中的所有包含內容的檔案,您需要找到檔案系統中的所有重複檔案組的路徑。一組重複的檔案至少包括二個具有完全相同內容的檔案。輸入列表中的單個目錄資訊字串的格式如下 root d1 d2 dm f1.txt f1 content f2.txt f2 cont...
Linux系統中查詢 刪除重複檔案,釋放磁碟空間。
在linux系作業系統中查詢並刪除重複檔案的方法的確有很多,不過這裡介紹的是一款非常簡單實用的軟體fslint。fslint是乙個重複檔案查詢工具,可以使用它來清除不必要的重複檔案,筆者經常使用它來釋放linux系統中的磁碟空間。fslint同時具有gui和cli模式。因此,對於新手來說,這是乙個使...
在MSSQL中查詢出重覆記錄
假如你表中只有乙個關鍵字段。可以用 select distinct t1.fid,t2.fcode,t2.fname from bbmaterialcode t1,bbmaterialcode t2 where t1.fcode t2.fcode and t1.fname t2.fname and ...