LeetCode 609. 在系统中查找重复文件(哈希)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 609. 在系统中查找重复文件(哈希)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1. 題目
給定一個目錄信息列表,包括目錄路徑,以及該目錄中的所有包含內(nèi)容的文件,您需要找到文件系統(tǒng)中的所有重復(fù)文件組的路徑。
一組重復(fù)的文件至少包括二個具有完全相同內(nèi)容的文件。
輸入列表中的單個目錄信息字符串的格式如下:
"root/d1/d2/.../dm f1.txt(f1_content) f2.txt(f2_content) ... fn.txt(fn_content)"這意味著有 n 個文件(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ù)文件路徑組的列表。
對于每個組,它包含具有相同內(nèi)容的文件的所有文件路徑。
文件路徑是具有下列格式的字符串:
來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/find-duplicate-file-in-system
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。
2. 解題
class Solution { // C++ public:vector<vector<string>> findDuplicate(vector<string>& paths) {unordered_map<string, unordered_set<string>> m;//文件內(nèi)容, 文件路徑集合string content, path, file;for(auto& p : paths) {content = path = file = "";int i = p.find(' ');path = p.substr(0,i)+"/";//路徑bool foundcontent = false;for(i++; i < p.size(); ++i){if(p[i] == '('){foundcontent = true;continue;}if(p[i] == ')'){m[content].insert(path+file);//記錄內(nèi)容包含的路徑文件foundcontent = false;content = file = "";i++;//跳過空格continue;}if(!foundcontent)file += p[i];elsecontent += p[i];}}vector<vector<string>> ans;for(auto& mi : m){if(mi.second.size() >= 2)ans.push_back(vector<string>(mi.second.begin(), mi.second.end()));}return ans;} };212 ms 36.1 MB
class Solution:# py3def findDuplicate(self, paths: List[str]) -> List[List[str]]:m = {};for p in paths:i = p.find(' ')content, path, file = "","",""path = p[0:i]+'/'foundcontent = Falsei += 1while i < len(p):if p[i]=='(':foundcontent = Truei += 1continueif p[i]==')':if content not in m:m[content] = set()m[content].add(path+file)foundcontent = Falsecontent, file = "", ""i += 2continueif not foundcontent:file += p[i]else:content += p[i]i += 1ans = []for content in m:if len(m[content]) >= 2:ans.append(list(m[content]))return ans332 ms 25.7 MB
總結(jié)
以上是生活随笔為你收集整理的LeetCode 609. 在系统中查找重复文件(哈希)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [Hands On ML] 7. 集成学
- 下一篇: LeetCode 1292. 元素和小于