如何使用python查找第一个不重复的字符?

2024-05-16 04:42:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在解决一个问题:给定一个由小英文字母组成的字符串s,查找并返回其中非重复字符的第一个实例。如果没有这样的字符,则返回“\u1”

例如:s=“abacabad”,输出应为firstNotRepeatingCharacter='c'

我写了一个简单的代码,它通过了所有的测试,但是当我提交它时,它报告了错误,有人知道我的代码出了什么问题吗?谢谢大家!

def firstNotRepeatingCharacter(s):   
    for i in list(s):
        if list(s).count(i) == 1:
            return i
    return '_'

Tags: 实例字符串代码inforreturndef报告
1条回答
网友
1楼 · 发布于 2024-05-16 04:42:00

这可能是一个性能问题,因为重复的count(和不必要的列表转换)调用使这种方法成为二次方法。您应该以线性解决方案为目标:

from collections import Counter

def firstNotRepeatingCharacter(s):   
    c = Counter(s)
    for i in s:
        if c[i] == 1:
            return i
    return '_'

您还可以将next与生成器和默认值一起使用:

def firstNotRepeatingCharacter(s):   
    c = Counter(s)
    return next((i for i in s if c[i] == 1), '_')

如果您只能使用内置计数器,只需制作自己的计数器(或任何其他允许您识别重复项的数据结构)

def firstNotRepeatingCharacter(s):   
    c = {}
    for i in s:
        c[i] = c.get(i, 0) + 1
    return next((i for i in s if c[i] == 1), '_')

相关问题 更多 >