[英]Code to output the first repeated character in given string?
我试图在我的字符串中找到第一个重复的字符并使用 python 输出该字符。 检查我的代码时,我可以看到我没有索引我的代码的最后一个字符。
我究竟做错了什么?
letters = 'acbdc'
for a in range (0,len(letters)-1):
#print(letters[a])
for b in range(0, len(letters)-1):
#print(letters[b])
if (letters[a]==letters[b]) and (a!=b):
print(b)
b=b+1
a=a+1
您可以以更简单的方式执行此操作:
letters = 'acbdc'
found_dict = {}
for i in letters:
if i in found_dict:
print(i)
break
else:
found_dict[i]= 1
输出: c
这是一个带有集合的解决方案,它应该比使用 dicts 稍快。
letters = 'acbdc'
seen = set()
for letter in letters:
if letter in seen:
print(letter)
break
else:
seen.add(letter)
这是一个解决方案,它会在找到 dup 后立即停止迭代
>>> from itertools import dropwhile
>>> s=set(); next(dropwhile(lambda c: not (c in s or s.add(c)), letters))
'c'
您应该使用range(0, len(letters))
而不是range(0, len(letters) - 1)
因为range
已经在比指定停止值小一时停止计数。 在这种情况下,从停止值中减去 1 只会让您跳过letters
的最后一个字符。
请阅读范围的文档: https ://docs.python.org/3/library/stdtypes.html#range
漂亮的单线发电机:
l = 'acbdc'
next(e for e in l if l.count(e)>1)
或遵循评论中的规则以适应“abba”案例:
l = 'acbdc'
next(e for c,e in enumerate(l) if l[:c+1].count(e)>1)
你的代码有一些问题......
1.从len(letters)
中删除-1
2. 后退一个缩进并执行b = b + 1
即使你不进入 if 语句
3.在第一个 for 循环中缩进并执行a = a + 1
。
请参阅下文,了解如何修复您的代码...
letters = 'acbdc'
for a in range(0, len(letters)):
# print(letters[a])
for b in range(0, len(letters)):
# print(letters[b])
if (letters[a] == letters[b]) and (a != b):
print(b)
b = b + 1
a = a + 1
如果复杂性不是问题,那么这将正常工作。
letters = 'acbdc'
found = False
for i in range(0, len(letters)-1):
for j in range(i+1, len(letters)):
if (letters[i] == letters[j]):
print (letters[j])
found = True
break
if (found):
break
下面的代码打印字符串中第一个重复的字符。 我使用列表的功能来解决这个问题。
def findChar(inputString):
list = []
for c in inputString:
if c in list:
return c
else:
list.append(c)
return 'None'
print (findChar('gotgogle'))
工作也很好。 它给出的结果为'g'。
def first_repeated_char(str1): for index,c in enumerate(str1): if str1[:index+1].count(c) > 1: return c return "None" print(first_repeated_char("abcdabcd"))
str_24 = input("Enter the string:")
for i in range(0,len(str_24)):
first_repeated_count = str_24.count(str_24[i])
if(first_repeated_count > 1):
break
print("First repeated char is:{} and character is
{}".format(first_repeated_count,str_24[i]))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.