929. 独特的电子邮件地址

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

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

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

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

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

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

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

929. 独特的电子邮件地址

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

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,一会再想一下
3.Java在线编译网站
https://www.tutorialspoint.com/compile_java_online.php
4.代码写的太不规范,感觉python比Java语言刷题时好用一点。
5.去掉.我是想用函数replace来写的,不知道为啥没有,想打死我自己
6.处理+应该用 replaceFirst函数,一会再改吧