題目地址:
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();
}
}
時空複雜度。