|
1 | 1 | class Solution {
|
2 |
| - public List<String> subdomainVisits(String[] cpdomains) { |
3 |
| - Map<String, Integer> map = new HashMap<>(); |
4 |
| - |
5 |
| - for (String s : cpdomains) { |
6 |
| - String[] strs = s.split("\\s+"); |
7 |
| - int count = Integer.parseInt(strs[0]); |
8 |
| - String[] domains = strs[1].split("\\."); |
9 |
| - |
10 |
| - String temp = domains[domains.length-1]; |
11 |
| - int domainLen = domains.length-1; |
12 |
| - |
13 |
| - while(domainLen >= 0) { |
14 |
| - map.put(temp, map.getOrDefault(temp, 0) + count); |
15 |
| - if (domainLen > 0) { |
16 |
| - temp = domains[domainLen-1] + "." + temp; |
17 |
| - } |
18 |
| - domainLen--; |
19 |
| - } |
20 |
| - |
| 2 | + public List<String> subdomainVisits(String[] cpdomains) { |
| 3 | + Map<String, Integer> map = new HashMap<>(); |
| 4 | + for(String domain : cpdomains) { |
| 5 | + int count = Integer.parseInt(domain.split("\\s+")[0]); |
| 6 | + String[] subDomains = domain.split("\\s+")[1].split("\\."); |
| 7 | + StringBuilder sb = new StringBuilder(); |
| 8 | + for (int i = subDomains.length - 1; i >= 0; i--) { |
| 9 | + if (sb.length() != 0) { |
| 10 | + sb.insert(0, "."); |
21 | 11 | }
|
22 |
| - |
23 |
| - List<String> ans = new ArrayList<>(); |
24 |
| - for (Map.Entry<String, Integer> entry : map.entrySet()) { |
25 |
| - String str = String.valueOf(entry.getValue()) + " " + entry.getKey(); |
26 |
| - ans.add(str); |
27 |
| - } |
28 |
| - |
29 |
| - return ans; |
| 12 | + sb.insert(0, subDomains[i]); |
| 13 | + map.put(sb.toString(), map.getOrDefault(sb.toString(), 0) + count); |
| 14 | + } |
| 15 | + } |
| 16 | + List<String> list = new ArrayList<>(); |
| 17 | + for (String key : map.keySet()) { |
| 18 | + list.add(map.get(key) + " " + key); |
30 | 19 | }
|
| 20 | + return list; |
| 21 | + } |
31 | 22 | }
|
0 commit comments