Python练习,执行时间

时间:2019-02-22 13:10:45

标签: python

这是一个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)

我期望我的解决方案会更快,因为我只迭代了一次字符串然后进行了连接,而另一方面,建议的解决方案运行了诸如分割,索引,切片之类的方法,我认为这会花费很多更多。

如果您需要更多有关此问题的信息,请告诉我。

0 个答案:

没有答案