leetcode 609 在系統中查詢重複檔案

2022-05-13 14:10:03 字數 1757 閱讀 6058

目錄給定乙個目錄資訊列表,包括目錄路徑,以及該目錄中的所有包含內容的檔案,您需要找到檔案系統中的所有重複檔案組的路徑。一組重複的檔案至少包括二個具有完全相同內容的檔案。

輸入列表中的單個目錄資訊字串的格式如下:

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

輸入:

["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] 個範圍內。

您可以假設在同一目錄中沒有任何檔案或目錄共享相同的名稱。

您可以假設每個給定的目錄資訊代表乙個唯一的目錄。目錄路徑和檔案資訊用乙個空格分隔。

超越競賽的後續行動:

假設您有乙個真正的檔案系統,您將如何搜尋檔案?廣度搜尋還是寬度搜尋?

如果檔案內容非常大(gb級別),您將如何修改您的解決方案?

如果每次只能讀取 1 kb 的檔案,您將如何修改解決方案?

修改後的解決方案的時間複雜度是多少?其中最耗時的部分和消耗記憶體的部分是什麼?如何優化?

如何確保您發現的重複檔案不是誤報?

class solution 

string dir = s.substr(0, i);

i++;

int j = i;

while(i < sz)

int l = i;

while(l < j && s[l] != '(')

string fname = s.substr(i, l - i);

l++;

int r = l;

while(r < sz && s[r] != ')')

string content = s.substr(l, r-l);

if(mp.find(content) == mp.end());

}else

j++;

i = j;}}

vector> findduplicate(vector& paths)

vector> res;

for(auto it : mp)

}return res;

}};

Linux系統檔案在系統中的傳輸

scp file user ip dir 上傳scp user ip file dir 遠端同步,速度快,缺省會忽略,檔案屬性,鏈結檔案,裝置檔案 rsync r 同步目錄 rsync p 同步許可權 rsync o 同步檔案所有人 rsync g 同步檔案所有組 rsync l 同步鏈結 rsyn...

在POSIX系統中安裝Redis

redis相容大部分posix系統,包括linux os x和bsd等。redis約定次版本號 即第乙個小數點後的數字 為偶數的版本是穩定版 如2.8版 3.0版 奇數版本是非穩定版 如2.7版 2.9版 完整命令如下 wget tar xzf redis stable.tar.gz cd redi...

在CentOS系統中安裝字型

前置背景 系統環境 centos6.5系統 jdk1.7 apache tomcat7.5 進入windows系統下的字型庫目錄 c windows fonts 把需要的宋體檔案 simsun.ttc 大小為10m 檔案複製乙份到新資料夾,把他重新命名為 simsun.ttf 參考圖1 拷貝sims...