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

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

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

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

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

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

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

思路
@符号之前的.全部去掉,并且@符号之前的第一个+号及之后的全部不要;@符号之后的全部不变
代码

class Solution {public int numUniqueEmails(String[] emails) {int len=emails.length;char[] a=new char[100];int[] b=new int[len];String[] emails1=new String[len];int i=0;int j=0;int k=0;int sum=0;int sum1=0;int result=0;for(i=0;i<len;i++){b[i]=i;sum=0;k=0;a=new char[100];for(j=0;j<emails[i].indexOf('@');j++){if(emails[i].charAt(j)!='+'&&emails[i].charAt(j)!='.'){a[j-sum]=emails[i].charAt(j);}else if(emails[i].charAt(j)=='.'){sum++;}else if(emails[i].charAt(j)=='+'){k=j;break;}}for(j=emails[i].indexOf('@');j<emails[i].length();j++){a[j-sum-emails[i].indexOf('@')+k]=emails[i].charAt(j);}emails1[i]=new String(a);}for(i=0;i<len;i++){for(j=i+1;j<len;j++){if(emails1[j].equals(emails1[i])){b[j]=b[i];break;}}}for(i=0;i<len;i++){for(j=i+1;j<len;j++){if(b[j]==b[i]){sum1++;break;}}}return len-sum1;}
}

遇到的问题
1.char[] a=new char[100];用数组a来保存每次的新邮箱,因为是每次,所以数组要清空,不清空的话会导致数组后面多余的字符直接复制。其他计数变量也要从0开始。
2.返回len-sum1;我想的是应该返回len+1-sum1,一会再想一下

因为sum1一开始等于0;然后从第二个开始比,所以是len-sum1 如果sum1一开始等于1;就应该返回len+1-sum1

3.Java在线编译网站
https://www.tutorialspoint.com/compile_java_online.php
4.代码写的太不规范,感觉python比Java语言刷题时好用一点。
5.去掉.我是想用函数replace来写的,不知道为啥没有,想打死我自己
**

一开始用的语句emails1[i]=emails[i].replace(".","");但是这样域名后面的.也被替换掉了,借鉴了评论里的代码

while (emails1[i].matches(".\…@.*"))
{
emails1[i] = emails1[i].replaceFirst("\.", “”);
}
(已经去掉了+)

**
6.处理+应该用 replaceFirst函数,一会再改吧
**

emails1[i]=emails[i].replaceFirst("\+.*@","@");

自己写的语句,开心
然后是要注意特殊字符要用转义字符
http://www.runoob.com/java/java-regular-expressions.html

**
正则表达式

class Solution {public int numUniqueEmails(String[] emails) {int len=emails.length;char[] a=new char[100];int[] b=new int[len];String[] emails1=new String[len];int i=0;int j=0;int k=0;int sum=0;int sum1=0;int result=0;for(i=0;i<len;i++){b[i]=i;//emails1[i]=emails[i].replace(".","");//这样的话域名的点也没有了emails1[i]=emails[i].replaceFirst("\\+.*@","@");//先去掉+号及以后的字符while (emails1[i].matches(".*\\..*@.*")) { emails1[i] = emails1[i].replaceFirst("\\.", "");}}for(i=0;i<len;i++){for(j=i+1;j<len;j++){if(emails1[j].equals(emails1[i])){b[j]=b[i];break;}}}for(i=0;i<len;i++){for(j=i+1;j<len;j++){if(b[j]==b[i]){sum1++;break;}}}return len-sum1;}
}

929. 独特的电子邮件地址相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

  7. C#leetcode刷题929独特的电子邮件地址

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

  8. 文巾解题 929. 独特的电子邮件地址

    1 题目描述 2 解题思路 这题没什么特别要说的,先截取'+'(如果有的话)之前的部分.然后把截取的部分中'.'换成''就可以了.之后放入一个set里面去,看集合里面有几个元素. class Solu ...

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

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

最新文章

  1. 分布式之消息队列复习精讲
  2. python 写文件 换行_Python学习16:读写文件
  3. jQuery 遍历 - closest() 方法
  4. 前台获取后台数据写法%#%..
  5. Entity Framework 学习结束语
  6. java编程赋值运算符_(24)赋值运算符
  7. _用WSL,MobaXterm,Cmder配置linux开发环境
  8. Javascript中函数声明与函数表达式的不同
  9. 有意思的小学数学竞赛题-2
  10. Ubuntu root账号的使用
  11. SPOJ NSUBSTR(后缀自动机)
  12. 股市舆情情感分类可视化系统
  13. HP已决定将webOS开源
  14. 重学前端第一天——HTML结构和常见的HTML元素
  15. 自动控制系统的典型环节
  16. 【Focal Loss】Focal Loss理解
  17. 有效年利率和年化百分比利率
  18. jzoj 6012.【NOIP2019模拟1.25A组】荷马史诗 dp
  19. 建立团队信任的五种方法
  20. ESP32 NVS同windows文件系统的类比,附上一段NVS操作的代码解析

热门文章

  1. C++求1000以内水仙花数
  2. 惠普HP Prime可编程计算器之工程测量计算
  3. 数据结构括号是否匹配
  4. shell学习18:if判断-e,-f,-f,-L,-r,-w,-x,-s,-nt,-ot的意思
  5. Android 调起系统相机拍照
  6. python离线安装第三方包
  7. highCharts图表应用-模拟心电图
  8. 盘点上海2010年入市新盘中最值得期待的楼盘
  9. WPF 触发器Triggers
  10. 2020美赛E题解题思路方法:淹溺在塑料中