微信改版,加星标不迷路!

每日一算法-无重复字符的最长子串

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

例如,在 alice@leetcode.com中,alice 是本地名称,而 leetcode.com 是域名。

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

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

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

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

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

示例:

输入:["test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"]
输出:2
解释:实际收到邮件的是 "testemail@leetcode.com" 和 "testemail@lee.tcode.com"。

提示:

  • 1 <= emails[i].length <= 100

  • 1 <= emails.length <= 100

  • 每封 emails[i] 都包含有且仅有一个 '@' 字符。

解析

首先利用index_a定位到"@"的位置,代码如下:

if(emails[i][j] == '@'){     index_a = j;     break;}

因为“@”将一个邮箱地址分为两个部分:本地名称和域名。

处理本地名称,如果遇到“.”,则进行忽略,代码如下:

if(emails[i][j] == '.'){      emails[i] = emails[i].substr(0,j) + mails[i].substr(j+1,-1);      j--;      index_a--;          }

如果遇到“+”,则忽略“+”和“@”之间的内容,代码如下:

if(emails[i][j] == '+'){      emails[i] = emails[i].substr(0,j) + emails[i].substr(index_a,-1);      break;}

由于题目中要求为不一样邮箱地址的数量,鉴于set具有去重复的特性,所以将email[i]依次放入到set集合中,代码如下:

set<string> s;for(int j = 0 ; j < num ; j++){     s.insert(emails[j]);}

最后返回set集合的大小就可以啦

return s.size();

实现代码

class Solution {public:    int numUniqueEmails(vector<string>& emails)     {        int num = emails.size();        if(num == 0){            return 0;        }        int index_a = 0;        for(int i = 0; i < num ; i++){            for(int j = 0 ; j < emails[i].length() ; j++){                if(emails[i][j] == '@'){                    index_a = j;                    break;                }            }            for(int j = 0 ; j < index_a ;j++){                if(emails[i][j] == '.'){                    emails[i] = emails[i].substr(0,j) + emails[i].substr(j+1,-1);                    j--;                    index_a--;                }                if(emails[i][j] == '+'){                    emails[i] = emails[i].substr(0,j) + emails[i].substr(index_a,-1);                    break;                }            }           }        set<string> s;        for(int j = 0 ; j < num ; j++){             s.insert(emails[j]);        }        return s.size();    }};

需要注意的地方


这道题没什么难度,考察的就是字符串的处理,常用库的使用,以及集合的特性。

【每日一算法】独特的电子邮件地址相关推荐

  1. LeetCode - 929 - 独特的电子邮件地址(unique-email-addresses)

    一 目录 不折腾的前端,和咸鱼有什么区别 目录 一 目录 二 前言 三 解题及测试 四 LeetCode Submit 五 解题思路 六 进一步思考 二 前言 难度:简单 涉及知识:字符串 题目地址: ...

  2. LeetCode-929. 独特的电子邮件地址

    929. 独特的电子邮件地址 每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com ...

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

    Leetcode 929.独特的电子邮件地址 1 题目描述(Leetcode题目链接)   每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.co ...

  4. 每日算法----929. 独特的电子邮件地址----2022/06/04

    目录 1. 题目描述 2. 示例 3. 思路 4. 遇上的问题 5. 具体实现代码 6. 官方题解 7 题目来源 1. 题目描述 每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成,以 '@ ...

  5. LeetCode 929. 独特的电子邮件地址

    1. 题目 每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写 ...

  6. LeetCode(929)——独特的电子邮件地址(JavaScript)

    每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而leetcode.com是域名. 除了小写字母,这些电子邮 ...

  7. 929. 独特的电子邮件地址

    题目 每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母, ...

  8. 929. 独特的电子邮件地址(简单,字符串)(12.20)

    每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母,这些电 ...

  9. 不积跬步无以至千里——LeetCode 929. 独特的电子邮件地址

    每封电子邮件都由一个本地名称和一个域名组成,以 @ 符号分隔. 例如,在 alice@leetcode.com中, alice 是本地名称,而 leetcode.com 是域名. 除了小写字母,这些电 ...

最新文章

  1. 基于EM算法的高斯混合模型参数估计
  2. C#实现缩放和剪裁图片的方法示例
  3. Activity中四大启动模式
  4. 苹果发布 iOS、macOS 更新,系统修复英特尔重大漏洞
  5. 发现本站一个非常简单易学的springClould教程 特此转载《方志朋》
  6. 总纲-信息、网络等级保护测评机构 、名单-等保测评机构目录-等保测评公司推荐目录
  7. 外贸常用术语_外贸常用术语总结.doc
  8. 微信一年的支付限额满了20万,无法支付了怎么办?
  9. Oracle range分区values less than代表的是小于
  10. OpenAI开源Point-E,可在Nvidia V100 GPU上1-2分钟生成3D模型
  11. java实现打印金字塔
  12. Java for函数用法_Java函数式编程(四)集合的使用
  13. 如何开启tiktok之旅
  14. php的JIT特性,PHP8新特性之JIT简介
  15. java连接打印机打印PDF
  16. 腾讯云服务器香港机房速度怎么样? – PING速度/路由跟踪和下载速度真实评测
  17. 错误 3002: 映射从第 10323 行开始的片段时有问题:表 T_BillTripDetail 的键(T_BillTripDetail.DetailGUID)具有潜在运行时冲突: 列(T_Bill
  18. 天气预报到底能有多精细?一个小网格里的天气变化
  19. 每周全球科技十大看点(2022.1.10-1.16)
  20. “开-闭”原则(Open-Closed Principle)

热门文章

  1. 求助:我有一辆机器人小车,怎么让它跑起来,还会避障、目标跟踪、路径规划?...
  2. 哈工大、清华、CSDN、嵌入式视觉联盟合办的 AIoT 盛会,你怎么舍得错过?!
  3. 杨强教授力荐,快速部署落地深度学习应用的实践手册
  4. “重构”黑洞:26岁MIT研究生的新算法 | 人物志
  5. 初学者的机器学习入门实战教程!
  6. 为了智能驾驶,李彦宏要改造城市道路了!
  7. PRICAI开幕 第四范式发起AutoML议题
  8. 怼完Sophia怼深度学习!细数完大神Yann LeCun 这些年怼过的N件事,原来顶级高手是这样怼人的...
  9. 学术 | DeepMind最新研究:使用更简单的环境就能检测AI是否安全
  10. 还在用Logback?Log4j2的异步性能已经无敌了,还不快试试