Question
Solution
题目大意:
给你一个邮箱地址的数组,求出有多少个不同的地址,其中localName有如下规则
- 加号(+)后面的字符及加号忽略
- 点(.)也忽略
思路:
直接遍历,字符串操作即可
Java实现:
public int numUniqueEmails(String[] emails) {
if (emails == null || emails.length == 0) {
return 0;
}
Set<String> localNames = new HashSet<>();
for (String email : emails) {
String[] arr = email.split("@");
String localName = arr[0];
// 忽略加号(+)后边的字符
int indexOfPlus = localName.indexOf("+");
if (indexOfPlus != -1) {
localName = localName.substring(0, indexOfPlus);
}
// 替换逗号
localName = localName.replaceAll("\.", "");
localNames.add(localName + "@" + arr[1]);
}
return localNames.size();
}
在处理地址的时候,用下面的方法取localName和domainName更快
int indexOfAt = email.indexOf("@");
String localName = email.substring(0, indexOfAt);
String domainName = email.substring(indexOfAt);