这是一个leetcode问题,我想知道我的解决方案比拟议的解决方案要慢,您能否给我一些有关时间复杂度的见解,以及为什么我的代码最终会更慢?
我的代码:
class Solution:
def numUniqueEmails(self, emails: 'List[str]') -> 'int':
forward_emails = set()
for email in emails:
fw_email = []
idx = 0
while email[idx] != '@' and email[idx] != '+':
if email[idx] != '.':
fw_email.append(email[idx])
idx += 1
if email[idx] == '+':
idx += 1
while email[idx] != '@':
idx += 1
while idx < len(email):
fw_email.append(email[idx])
idx += 1
forward_emails.add(''.join(fw_email))
return len(forward_emails)
建议的解决方案:
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)
我期望我的解决方案会更快,因为我只迭代了一次字符串然后进行了连接,而另一方面,建议的解决方案运行了诸如分割,索引,切片之类的方法,我认为这会花费很多更多。
如果您需要更多有关此问题的信息,请告诉我。