Question
Solution
题目大意:
给你一个邮箱地址的数组,求出有多少个不同的地址,其中localName有如下规则
- 加号(+)后面的字符及加号忽略
- 点(.)也忽略
思路:
直接遍历,字符串操作即可
Java实现:
public int numUniqueEmails(String[] emails) { if (emails == null || emails.length == 0) { return 0; } SetlocalNames = 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);