You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python if语句条件顺序是否影响性能?以Leetcode题目为例

两段「第一个出现两次的字母」解法代码的性能对比

以LeetCode的「第一个出现两次的字母」题目为例,常规解法是遍历字符串,用容器记录已出现的字符,遇到重复字符时立即返回。现有如下两段Python实现代码:

第一段代码

class Solution:
    def repeatedCharacter(self, s: str) -> str:
        seen = []
        for i in s:
            if i in seen:
                return i
            else:
                seen.append(i)

第二段代码

class Solution:
    def repeatedCharacter(self, s: str) -> str:
        seen = []
        for i in s:
            if i not in seen:
                seen.append(i)
            else:
                return i

性能差异分析

这两段代码在时间、内存性能上几乎没有任何差异,本质只是编码偏好的区别:

  • 核心逻辑完全一致:都是逐个遍历字符,检查是否已记录,重复则返回,否则存入容器。
  • 时间复杂度相同:列表的in操作是线性遍历(O(n)),两段代码的查找次数、循环执行流程完全一致,只是判断条件的逻辑顺序相反,没有带来性能变化。
  • 内存占用一致:两者都会在找到重复字符前,将所有不重复字符存入seen列表,占用的内存空间完全相同。

性能优化建议

如果想要真正提升这段代码的性能,建议把seen从列表换成集合(set)。因为集合的成员查询是基于哈希表的O(1)操作,远快于列表的O(n)线性查找,尤其是当字符串长度较大时,性能提升会很明显。优化后的代码示例:

class Solution:
    def repeatedCharacter(self, s: str) -> str:
        seen = set()
        for c in s:
            if c in seen:
                return c
            seen.add(c)

内容的提问来源于stack exchange,提问作者poppycoder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 15:02:13