>【★】811. 子域名访问计数<
>subdomainVisits<
一、解题思路
1、解法一( Java )
解法思路:哈希表计数 使用 Java split() 方法拆分字符串,将数字以及网址部分拆分开,统计访问次数为 num ,使用 StringBuilder 而不直接使用 “+” 连接字符串减少程序运行时间,最后整合 HashMap 中的结果到 list 中并返回结果即可
代码如下:
class Solution {
public List<String> subdomainVisits(String[] cpdomains) {
Map<String,Integer> map = new HashMap<>();
for(String str : cpdomains) {
String[] temp = str.split(" ");
int num = Integer.parseInt(temp[0]),len = temp[1].length();
String[] arr = temp[1].split("\\.");
StringBuilder sb = new StringBuilder();
for(int i = arr.length - 1;i >= 0;i--) {
if(sb.length() > 0) sb.insert(0,".");
sb.insert(0,arr[i]);
if(map.containsKey(sb.toString())) {
int pre = map.get(sb.toString());
map.put(sb.toString(),pre + num);
}
else map.put(sb.toString(),num);
}
}
List<String> list = new ArrayList<>();
for(String key : map.keySet()) {
StringBuilder sb = new StringBuilder();
sb.append(map.get(key)).append(" ").append(key);
list.add(sb.toString());
}
return list;
}
}
运行结果截图如下:
|