力扣——独特的电子邮件地址

每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔。

例如,在 [email protected]中, alice 是本地名称,而 leetcode.com 是域名。

除了小写字母,这些电子邮件还可能包含 ‘,‘ 或 ‘+‘

如果在电子邮件地址的本地名称部分中的某些字符之间添加句点(‘.‘),则发往那里的邮件将会转发到本地名称中没有点的同一地址。例如,"[email protected]” 和 “[email protected]” 会转发到同一电子邮件地址。 (请注意,此规则不适用于域名。)

如果在本地名称中添加加号(‘+‘),则会忽略第一个加号后面的所有内容。这允许过滤某些电子邮件,例如 [email protected] 将转发到 [email protected]。 (同样,此规则不适用于域名。)

可以同时使用这两个规则。

给定电子邮件列表 emails,我们会向列表中的每个地址发送一封电子邮件。实际收到邮件的不同地址有多少?

class Solution {
    public int numUniqueEmails(String[] emails) {
        Set<String> distinctEmailSet = new HashSet<String>();
        for (String s : emails) {
            char[] buff = s.toCharArray();
            int curr = 0;
            int actual = 0;
            while(curr < buff.length) {
                switch(buff[curr]) {
                    case ‘.‘:
                        ++curr;
                        break;
                    case ‘+‘:
                        while(curr < buff.length && buff[curr] != ‘@‘) ++curr;
                        while(curr < buff.length) buff[actual++] = buff[curr++];
                        break;
                    case ‘@‘:
                        while(curr < buff.length) buff[actual++] = buff[curr++];
                        break;
                    default:
                        buff[actual++] = buff[curr++];
                        break;
                }
            }
            distinctEmailSet.add(new String(buff,0, actual));
        }
        return distinctEmailSet.size();
    }
}

原文地址:https://www.cnblogs.com/JAYPARK/p/10274174.html

时间: 2024-11-14 15:38:26

力扣——独特的电子邮件地址的相关文章

[Swift Weekly Contest 108]LeetCode929. 独特的电子邮件地址 | Unique Email Addresses

Every email consists of a local name and a domain name, separated by the @ sign. For example, in [email protected], alice is the local name, and leetcode.com is the domain name. Besides lowercase letters, these emails may contain '.'s or '+'s. If you

【leecode】独特的电子邮件地址

每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 [email protected]中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母,这些电子邮件还可能包含 ',' 或 '+'. 如果在电子邮件地址的本地名称部分中的某些字符之间添加句点('.'),则发往那里的邮件将会转发到本地名称中没有点的同一地址.例如,"[email protected]" 和 "[email protected]" 会转发到同一电子邮件

Leetcode-929 Unique Email Addresses(独特的电子邮件地址)

1 class Solution 2 { 3 public: 4 int numUniqueEmails(vector<string>& emails) 5 { 6 for(int i = 0;i < emails.size();i ++) 7 { 8 for(int j = 0;j < emails[i].size();j ++) 9 { 10 if(emails[i][j]=='@') 11 { 12 for(int k = 0;k < j;k ++) 13 {

LeetCode(力扣)——Search in Rotated Sorted Array 搜索旋转排序数组 python实现

题目描述: python实现 Search in Rotated Sorted Array 搜索旋转排序数组   中文:假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1 . 你可以假设数组中不存在重复的元素. 你的算法时间复杂度必须是 O(log n) 级别. 英文:Suppose an array sorted i

力扣——3sum closest(最接近的三数之和)python 实现

题目描述: 中文: 给定一个包括 n 个整数的数组 nums 和 一个目标值 target.找出 nums 中的三个整数,使得它们的和与 target 最接近.返回这三个数的和.假定每组输入只存在唯一答案. 英文: Given an array nums of n integers and an integer target, find three integers in nums such that the sum is closest to target. Return the sum of

力扣 ——4Sum (四数之和)python 实现

题目描述: 中文: 给定一个包含 n 个整数的数组 nums 和一个目标值 target,判断 nums 中是否存在四个元素 a,b,c 和 d ,使得 a + b + c + d 的值与 target 相等?找出所有满足条件且不重复的四元组. 英文: Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums such that a + b + c + d

卡特兰数(Catalan number)-力扣96

卡特兰数又称卡塔兰数,英文名Catalan number,是组合数学中一个常出现在各种计数问题中出现的数列.以比利时的数学家欧仁·查理·卡塔兰 (1814–1894)的名字来命名,其前几项为 : 1, 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796, 58786, 208012, 742900, 2674440, 9694845, 35357670, 129644790, 477638700, 1767263190, 6564120420, 244662

力扣算法题—042接雨水

1 #include"000库函数.h" 2 //一点头绪都没有 3 //然后就自己按自己的意思来一遍 4 //好像没有用算法 5 //16ms,让我激动一把 6 7 class Solution { 8 public: 9 int trap(vector<int>& height) { 10 if (height.size() < 2)return 0; 11 int s = 0;//起始点 12 int e = 0;//终止点 13 int v = 0;/

力扣题目汇总(加一,旋转数组,整数反转)

力扣题目汇总(加一,旋转数组,整数反转) 加一 1.题目描述 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一. 最高位数字存放在数组的首位, 数组中每个元素只存储一个数字. 你可以假设除了整数 0 之外,这个整数不会以零开头. 示例 1: 输入: [1,2,3] 输出: [1,2,4] 解释: 输入数组表示数字 123. 示例 2: 输入: [4,3,2,1] 输出: [4,3,2,2] 解释: 输入数组表示数字 4321. 2.解题思路 #错误思路 列表最后一位加1,判断最后