-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDistinctMails.java
More file actions
42 lines (36 loc) · 1.21 KB
/
Copy pathDistinctMails.java
File metadata and controls
42 lines (36 loc) · 1.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
package google;
import com.sun.tools.javac.util.StringUtils;
import java.util.HashMap;
import java.util.Map;
public class DistinctMails {
public int numUniqueEmails(String[] emails) {
Map<String, Integer> emap = new HashMap<>();
for (String email : emails) {
String key = getEmail(email);
if (!emap.containsKey(key)) {
emap.put(key, 1);
}
}
return emap.keySet().size();
}
private String getEmail(String original) {
StringBuffer stringBuffer = new StringBuffer();
boolean skip = false;
for (int i = 0; i < original.length(); i++) {
if (original.charAt(i) == '@') {
return formDomain(stringBuffer, original, i);
} else if (original.charAt(i) == '+') {
skip = true;
} else if (original.charAt(i) != '.' && skip == false) {
stringBuffer.append(original.charAt(i));
}
}
return "";
}
private String formDomain(StringBuffer buffer, String original, int i) {
for (; i < original.length(); i++) {
buffer.append(original.charAt(i));
}
return buffer.toString();
}
}