Leetcode 387的时间复杂度

时间:2019-08-27 00:03:26

标签: python python-3.x

我需要对时间复杂度有更好的了解,这个特定示例似乎使我感到困惑。

问题:(来源LeetCode) 给定一个字符串,找到其中的第一个非重复字符并返回其索引。如果不存在,则返回-1。

示例:

alert($('#TEST').find('li[class^='sort']').html());

注意:您可以假定该字符串仅包含小写字母。

根据我的解决方案,我知道for循环将遍历字符串,最糟糕的情况是O(n)时间,n是字符串的长度。但是在for循环中,我会检查每个字符的计数,并且我知道count()方法本身需要O(n)时间。因此,使其成为O(n ^ 2)解决方案?我的逻辑正确吗?

我的解决方案:

s = "leetcode"
return 0.

s = "loveleetcode",
return 2.

因此,我的代码适用于较小的测试用例,但是在测试s是巨大字符串的情况时,它表示已超过时间限制。我不需要解决问题的方法,而是只想知道O(n ^ 2)是否是我代码的实际时间复杂度。

1 个答案:

答案 0 :(得分:3)

是的,这是正确的。 for ... len(s)的复杂度为O(|s|)s.count也是如此。由于您嵌套了它们,所以您有了O(|s|^2)