LeetCode 811 子網域名稱訪問計數

2021-10-02 00:04:26 字數 1756 閱讀 6918

乙個**網域名稱,如"discuss.leetcode.com",包含了多個子網域名稱。作為頂級網域名稱,常用的有"com",下一級則有"leetcode.com",最低的一級為"discuss.leetcode.com"。當我們訪問網域名稱"discuss.leetcode.com"時,也同時訪問了其父網域名稱"leetcode.com"以及頂級網域名稱 "com"。

接下來會給出一組訪問次數和網域名稱組合的列表cpdomains 。要求解析出所有網域名稱的訪問次數,輸出格式和輸入格式相同,不限定先後順序。

示例 1:

輸入:

["9001 discuss.leetcode.com"]

輸出:

["9001 discuss.leetcode.com", "9001 leetcode.com", "9001 com"]

說明:

子網域名稱"leetcode.com"和"com"都會被訪問,所以它們都被訪問了9001次。

示例 2

輸入:

["900 google.mail.com", "50 yahoo.com", "1 intel.mail.com", "5 wiki.org"]

輸出:

["901 mail.com","50 yahoo.com","900 google.mail.com","5 wiki.org","5 org","1 intel.mail.com","951 com"]

說明:

按照假設,會訪問"google.mail.com" 900次,"yahoo.com" 50次,"intel.mail.com" 1次,

"wiki.org" 5次。

而對於父網域名稱,會訪問"mail.com" 900+1 = 901次,"com" 900 + 50 + 1 = 951次,和 "org" 5 次。

思路:對網域名稱字串進行分割。以空格為界,分割成數字部分; 以點為界,分割要求的網域名稱部分。

對分割好的網域名稱部分,作為鍵,存入map;

對數字部分 string 轉成 int ,作為值,對應鍵存入map;

將map生成之後,進行輸出到vector。輸出的同時,把值 int 轉成string。

class solution 

val = stoint(num); // 把string轉成int

int pt1 = cpdomains[i].find('.')+1; // 查詢第乙個 . 的位置

int pt2 = cpdomains[i].rfind('.')+1; // 查詢最後乙個 . 的位置

if(pt1 == pt2) // 如果只有乙個 .

else // 有兩個 .

}vec = map_vec(str_cnt); // 把map轉成vector

return vec;

}// string 轉 int

int stoint(string s)

return res;

}// map轉vector

vectormap_vec(maps_i)

return res;

}// int轉string

string to_string(int val)

reverse(res.begin(), res.end()); // 一定要記得反轉

return res;}};

LeetCode 811 子網域名稱訪問計數

乙個 網域名稱,如 discuss.leetcode.com 包含了多個子網域名稱。作為頂級網域名稱,常用的有 com 下一級則有 leetcode.com 最低的一級為 discuss.leetcode.com 當我們訪問網域名稱 discuss.leetcode.com 時,也同時訪問了其父網域...

Leetcode 811 子網域名稱訪問計數

乙個 網域名稱,如 discuss.leetcode.com 包含了多個子網域名稱。作為頂級網域名稱,常用的有 com 下一級則有 leetcode.com 最低的一級為 discuss.leetcode.com 當我們訪問網域名稱 discuss.leetcode.com 時,也同時訪問了其父網域...

leetcode 811 子網域名稱訪問計數

近期一直在用python刷leetcode的題,都提交到了github上了 乙個 網域名稱,如 discuss.leetcode.com 包含了多個子網域名稱。作為頂級網域名稱,常用的有 com 下一級則有 leetcode.com 最低的一級為 discuss.leetcode.com 當我們訪問...