题目地址:
https://leetcode.com/problems/unique-email-addresses/
给定若干邮箱地址,要求用户名部分按照这样的方式解析:如果遇到小数点则忽略,遇到加号则忽略其后的所有字符。问这些邮箱地址解析后有多少个不同的。代码如下:
import java.util.HashSet;
import java.util.Set;
public class Solution {
public int numUniqueEmails(String[] emails) {
Set<String> set = new HashSet<>();
for (String email : emails) {
// 把@找到,分离域名和用户名
int at = email.indexOf('@');
String host = email.substring(at);
StringBuilder name = new StringBuilder();
for (int i = 0; i < at; i++) {
char ch = email.charAt(i);
if (ch == '+') {
break;
}
if (ch != '.') {
name.append(ch);
}
}
set.add(name.append(host).toString());
}
return set.size();
}
}
时空复杂度。