<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ?LeetCode刷題實(shí)戰(zhàn)609:在系統(tǒng)中查找重復(fù)文件

          共 2403字,需瀏覽 5分鐘

           ·

          2022-05-19 17:25

          算法的重要性,我就不多說了吧,想去大廠,就必須要經(jīng)過基礎(chǔ)知識和業(yè)務(wù)邏輯面試+算法面試。所以,為了提高大家的算法能力,這個(gè)公眾號后續(xù)每天帶大家做一道算法題,題目就從LeetCode上面選 !

          今天和大家聊的問題叫做?在系統(tǒng)中查找重復(fù)文件,我們先來看題面:
          https://leetcode.cn/problems/find-duplicate-file-in-system/


          給你一個(gè)目錄信息列表 paths ,包括目錄路徑,以及該目錄中的所有文件及其內(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)"
          這意味著,在目錄 root/d1/d2/.../dm 下,有 n 個(gè)文件 ( f1.txt, f2.txt ... fn.txt ) 的內(nèi)容分別是 ( f1_content, f2_content ... fn_content ) 。注意:n >= 1 且 m >= 0 。如果 m = 0 ,則表示該目錄是根目錄。

          輸出 是由 重復(fù)文件路徑組 構(gòu)成的列表。其中每個(gè)組由所有具有相同內(nèi)容文件的文件路徑組成。文件路徑是具有下列格式的字符串:

          "directory_path/file_name.txt"

          示例

          示例 1

          輸入:paths = ["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"]]

          示例 2

          輸入:paths = ["root/a 1.txt(abcd) 2.txt(efgh)","root/c 3.txt(abcd)","root/c/d 4.txt(efgh)"]
          輸出:[["root/a/2.txt","root/c/d/4.txt"],["root/a/1.txt","root/c/3.txt"]]

          解題

          https://blog.csdn.net/weixin_44389717/article/details/123266433

          1、首先,通過字符串的split方法,以空格分割,將paths字符串分割各個(gè)values

          2、接著循環(huán)將各個(gè)部分提取出來,以每個(gè)文件的內(nèi)容作為map的key,使用HashMap的getOrDefault(key,defaultValue)方法查詢該key是否有值,如果沒有則新建一個(gè)空的list為其做準(zhǔn)備,并且接著put一個(gè)以文件內(nèi)容為key,list為value的map
          3、此時(shí),第一次循環(huán)遍歷第一個(gè)文件內(nèi)容就結(jié)束了,這時(shí)以Map類型為集合的第一個(gè)內(nèi)容為(“abcd”,[“root/a/1.txt”])
          如此反復(fù)不斷遍歷,如果查詢有這個(gè)key,那么就add在該key的value后面

          4、新建一個(gè)List
          5、遍歷完成后,循環(huán)每一個(gè)key,如果該key的value長度大于1,則表示有重復(fù)的內(nèi)容,那么將其存入新的數(shù)組

          6、最后返回即可

          HashMap< String, List < String >> map?= new?HashMap < > ();
          ????????for?(String path: paths) {
          ????????????String[] values = path.split(" ");
          ????????????for?(int?i = 1; i < values.length; i++) {
          ????????????????String[] name_cont = values[i].split("\\(");
          ????????????????name_cont[1] = name_cont[1].replace(")", "");
          ????????????????List < String > list?= map.getOrDefault(name_cont[1], new?ArrayList < String > ());
          ????????????????list.add(values[0] + "/"?+ name_cont[0]);
          ????????????????map.put(name_cont[1], list);
          ????????????}
          ????????}
          ????????List < List < String >> res = new?ArrayList< >();
          ????????for?(String key: map.keySet()) {
          ????????????if?(map.get(key).size() > 1)
          ????????????????res.add(map.get(key));
          ????????}
          ????????return?res;
          上期推文:
          LeetCode1-600題匯總,希望對你有點(diǎn)幫助!
          LeetCode刷題實(shí)戰(zhàn)601:體育館的人流量
          LeetCode刷題實(shí)戰(zhàn)602:好友申請 II :誰有最多的好友
          LeetCode刷題實(shí)戰(zhàn)603:連續(xù)空余座位
          LeetCode刷題實(shí)戰(zhàn)604:迭代壓縮字符串
          LeetCode刷題實(shí)戰(zhàn)605:種花問題
          LeetCode刷題實(shí)戰(zhàn)606:根據(jù)二叉樹創(chuàng)建字符串
          LeetCode刷題實(shí)戰(zhàn)607:銷售員
          LeetCode刷題實(shí)戰(zhàn)608:樹節(jié)點(diǎn)

          瀏覽 11
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日韩成人无码毛片 | JUY-579被丈夫的上司侵犯后的第7天,我 尤物网在线观看 | 91久久久18久久久 | 小媳妇操逼| 国产三级片视频 |