题目
解题思路
使用substring来分割字符串;
使用entry来遍历map;
在循环里用+连接字符串.
Code
class Solution {
private Map<String, Integer> visitMap = new HashMap<>();
//使用Map的键值对来计数很方便
public List<String> subdomainVisits(String[] cpdomains) {
for (String cpdomain : cpdomains) {
//遍历字符串数组
int index = cpdomain.indexOf(' ');
int visit = Integer.parseInt(cpdomain.substring(0, index));
//获取前面的数字rep
String domain = cpdomain.substring(index + 1);
//获取域名的d1.d2
add(domain, visit);
//以键值对的形式存入Map中
}
List<String> results = new ArrayList<>();
for (Map.Entry<String, Integer> entry : visitMap.entrySet()) {
String result = entry.getValue() + " " + entry.getKey();
results.add(result);
}
return results;
//返回计算后的数组
}
private void add(String domain, int visit) {
while (domain.contains(".")) {
visitMap.put(domain, visitMap.getOrDefault(domain, 0) + visit);
domain = domain.substring(domain.indexOf(".") + 1);
}
visitMap.put(domain, visitMap.getOrDefault(domain, 0) + visit);
}
}
代码运行截图