929. Unique Email Address - LeetCode

Question

929. Unique Email Address

Solution

题目大意:

给你一个邮箱地址的数组,求出有多少个不同的地址,其中localName有如下规则

  1. 加号(+)后面的字符及加号忽略
  2. 点(.)也忽略

思路:

直接遍历,字符串操作即可

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);
posted @ 2018-10-30 09:31  okokabcd  阅读(351)  评论(0编辑  收藏  举报