资讯专栏INFORMATION COLUMN

Leetcode PHP题解--D2 929. Unique Email Addresses

xuhong / 2778人阅读

摘要:题目链接题目分析题目要求过滤重复的邮箱地址。最终返回不重复的用户名个数。域名部分则不进行处理。替换为空字符串。下标为用户名部分,下标为域名部分删去后面的所有字符。最后,用包住以上代码,在外面初始化数组,用去重,再该数组就完成了。

929. Unique Email Addresses 题目链接

929. Unique Email Addresses

题目分析

题目要求过滤重复的邮箱地址。最终返回不重复的用户名个数。
过滤规则是:邮箱名中的.要被忽略,且+后面的所有字符都要删去。域名部分则不进行处理。

思路

输入是一个数组,那么我们用foreach就可以了。

对于数组中的每一个元素,进行如下处理:

先以@为分隔符拆分邮箱地址为用户名部分和域名部分。

$emailStruct = explode("@", $email);

替换.为空字符串。

$username = str_replace($emailStruct[0],".",""); //下标0为用户名部分,下标1为域名部分

删去+后面的所有字符。

$usernameStruct = explode("+",$username);
$username = $usernameStruct[0];

这里用的是explode方法。
当然,也可以用str_pos获取+的位置,再用strtr函数截取字符串。

把用户名塞进记录用户名的数组里面。

$replacedEmails[] = $username.$emailStruct[1];

至此,对每个邮箱地址就处理完成了。

最后,用foreach包住以上代码,在foreach外面初始化$replacedEmails数组,用array_unique去重,再count该数组就完成了。

最终代码
class Solution {
    function numUniqueEmails($emails) {
        $replacedEmails = [];
        foreach($emails as $email){
            $emailStruct = explode("@",$email);
            $username = str_replace($emailStruct[0],".","");
            $usernameStruct = explode("+",$username);
            $username = $usernameStruct[0];
            $replacedEmails[] = $username.$emailStruct[1];
        }
        return count(array_unique($replacedEmails));
    }
}
优化方案

直接把用户名做为数组的键值,可以省略去重步骤。

若觉得本文章对你有用,欢迎用爱发电资助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/30970.html

相关文章

  • [LeetCode] 929. Unique Email Addresses

    Problem Every email consists of a local name and a domain name, separated by the @ sign. For example, in alice@leetcode.com, alice is the local name, and leetcode.com is the domain name. Besides lower...

    amuqiao 评论0 收藏0
  • Leetcode PHP题解--D5 804. Unique Morse Code Words

    摘要:题目链接题目分析这个题目要求算出把给定数组中的字符串转换成摩尔斯码后,有多少个不同的摩尔斯码。转换完成后存进数组内,再用函数排除。再排除结果即可。优化方案直接存为数组的键则可以省去用去重的步骤。 804. Unique Morse Code Words 题目链接 804. Unique Morse Code Words 题目分析 这个题目要求算出把给定数组中的字符串转换成摩尔斯码后,有...

    zombieda 评论0 收藏0
  • 929-独特的电子邮件地址

    摘要:前言的第一题独特的电子邮件地址每封电子邮件都由一个本地名称和一个域名组成,以符号分隔。例如,和会转发到同一电子邮件地址。实现代码独特的电子邮件地址本地名称域名根据指定规则解析后的本地名称,先按加号切割字符串,然后替换使用去重 前言 Weekly Contest 108的第一题 独特的电子邮件地址: 每封电子邮件都由一个本地名称和一个域名组成,以@符号分隔。 例如,在 alice@le...

    IntMain 评论0 收藏0
  • Leetcode PHP题解--D80 182. Duplicate Emails

    摘要:题目链接题目分析写出查找表中重复邮箱地址的语句。思路用把结果聚合,并用函数计算出现次数。用筛选出现次数大于的结果即可。最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D80 182. Duplicate Emails 题目链接 182. Duplicate Emails 题目分析 写出 查找表中重复邮箱地址的SQL语句。 思路 用GROUP BY把结果聚合,并用count函数计算出现...

    wpw 评论0 收藏0
  • Leetcode PHP题解--D90 217. Contains Duplicate

    摘要:题目链接题目分析返回给定的数组中是否有元素重复出现。思路用和即可最终代码若觉得本文章对你有用,欢迎用爱发电资助。 D90 217. Contains Duplicate 题目链接 217. Contains Duplicate 题目分析 返回给定的数组中是否有元素重复出现。 思路 用count和array_unique即可 最终代码

    mingde 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<