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
相关产品推荐
相关产品推荐

