Python:获取字符串中第一个"encountered"个重复的字符
Python: Get the first "encountered" duplicated character in a string
我想知道是否有更有效的方法来解决以下编码测试:
问题:仅当检测到多个重复字符时才获取字符串中遇到的第一个重复字符,否则 return None'
示例:
#1 'abbcdefa' = return 'b' 因为是字符串中第一个遇到的DUPLICATE字符,而重复的'a'字符出现的时间比重复的要晚很多'b'.
#2 'abcdefa' = None(因为 a 是字符串中唯一的重复字符)
def first_dup_char(A):
seen, dups = [], []
for i in A:
if i in seen:
dups.append(i)
else:
seen.append(i)
# if dups list items > 1 then return the first dup else print None
return dups[0] if len(dups) > 1 else 'None'
我上面的解决方案通过使用两个列表来工作。我想使用 set() 和 dict,但不幸的是它们都是无序的,除非我遗漏了什么?
你可以使用一个集合来更新你在循环时遇到的字母
def first_dup_char(A) :
seen = set()
first_dup = None
for c in A :
if c in seen :
if first_dup == None : first_dup = c
else : return first_dup
else :
seen.add(c)
return None
A = "abbcdefa"
print(first_dup_char(A)) # b
B = "abcdefa"
print(first_dup_char(B)) # None
使用变量 first_dup
你不会丢失第一个重复的信息,而且你会知道你何时已经达到两对重复,这样你就可以 return第一个没有 运行 循环直到结束。
我想知道是否有更有效的方法来解决以下编码测试:
问题:仅当检测到多个重复字符时才获取字符串中遇到的第一个重复字符,否则 return None'
示例:
#1 'abbcdefa' = return 'b' 因为是字符串中第一个遇到的DUPLICATE字符,而重复的'a'字符出现的时间比重复的要晚很多'b'.
#2 'abcdefa' = None(因为 a 是字符串中唯一的重复字符)
def first_dup_char(A):
seen, dups = [], []
for i in A:
if i in seen:
dups.append(i)
else:
seen.append(i)
# if dups list items > 1 then return the first dup else print None
return dups[0] if len(dups) > 1 else 'None'
我上面的解决方案通过使用两个列表来工作。我想使用 set() 和 dict,但不幸的是它们都是无序的,除非我遗漏了什么?
你可以使用一个集合来更新你在循环时遇到的字母
def first_dup_char(A) :
seen = set()
first_dup = None
for c in A :
if c in seen :
if first_dup == None : first_dup = c
else : return first_dup
else :
seen.add(c)
return None
A = "abbcdefa"
print(first_dup_char(A)) # b
B = "abcdefa"
print(first_dup_char(B)) # None
使用变量 first_dup
你不会丢失第一个重复的信息,而且你会知道你何时已经达到两对重复,这样你就可以 return第一个没有 运行 循环直到结束。