題目描述:
乙個**網域名稱,如"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」]
說明:例子中僅包含乙個**網域名稱:「discuss.leetcode.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 次。
注意事項:
cpdomains 的長度小於 100。
每個網域名稱的長度小於100。
每個網域名稱位址包含乙個或兩個"."符號。
輸入中任意乙個網域名稱的訪問次數都小於10000。
方法1:
主要思路:
(1)直接根據題目給出的解析網域名稱的方式,對每個網域名稱進行逐步解析,並將解析的結果存入到unordered_map中進行統計;
class
solution
int num=
atoi
((str.
substr(0
,cur_pos)).
c_str()
);//分割出各個網域名稱
++cur_pos;
mp[str.
substr
(cur_pos)]+
=num;
while
(cur_possize()
&&str[cur_pos]
!='.')if
(cur_pos==str.
size()
)++cur_pos;
mp[str.
substr
(cur_pos)]+
=num;
while
(cur_possize()
&&str[cur_pos]
!='.')if
(cur_pos==str.
size()
)++cur_pos;
mp[str.
substr
(cur_pos)]+
=num;
}//儲存結果
vector res;
//將結果轉成需要的輸出格式
for(
auto
& it:mp)
return res;}}
;
811 子網域名稱訪問計數
乙個 網域名稱,如 discuss.leetcode.com 包含了多個子網域名稱。作為頂級網域名稱,常用的有 com 下一級則有 leetcode.com 最低的一級為 discuss.leetcode.com 當我們訪問網域名稱 discuss.leetcode.com 時,也同時訪問了其父網域...
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 時,也同時訪問了其父網域...