Leetcode "unique email addresses"问题解释



我在leetcode上看到了这段代码。这行是如何删除"+"之后的所有内容的?

local=local[:local.index('+')]

class Solution(object):
def numUniqueEmails(self, emails):
seen = set()
for email in emails:
local, domain = email.split('@')
if '+' in local:
local = local[:local.index('+')]
seen.add(local.replace('.','') + '@' + domain)
return len(seen)

此代码所做的是通过拆分电子邮件来分别获取电子邮件的第一部分和最后一部分。示例:

email = "1234+5678@gmail.com"
//local is now 1234+5678. domain is gmail.com
local, domain = email.split('@')

现在,下一段代码(您在问题中特别要求)

if '+' in local:
local = local[:local.index('+')]

它的作用是如果+local中,它将获取该+的索引,并将local设置为与其之前的字符相等。否则,local将保持不变。在这种情况下,local现在将是1234,因为local.index('+')返回4。因此,local = local[0:4]local设置为等于前4个字符。

最后一位代码:

seen.add(local.replace('.','') + '@' + domain)
return len(seen)

这样做的目的是用一个空字符替换local中的.字符。然后,它将最初拆分的@domain相加,在本例中为gmail.com。所以现在,seen应该等于:1234@gmail.com。然后返回CCD_ 18的长度,即CCD_。我希望这个答案能让你理解代码的作用。

最新更新