字符串中重复的字符



你好,我是python初学者。我正在构建一个小程序,可以找到任何重复字符的字符串。然而,有些事我不明白。

代码:

def is_isogram(string):
dict = {}
for letter in string:
dict[letter] = 1
if letter in dict:
dict[letter] += 1
return dict

print(is_isogram("Dermatoglyphics"))

输出{"D":1、"e":1、"r":1、"m":1、"一个":1、"t":1、"o":1、"g":1、"l":1、"y":1、"p":1、"h":1、"我":1、"c":1,"s":2}

我设置了一个空字典。然后,我使用for循环遍历字符串,然后在每次迭代中,它应该将1赋值给字典键& & ">

然后使用"if…in"检查字母是否已经出现,如果已经出现,则显示"字母"。

我在一个单词Dermatoglyphics上尝试了它,但每次最后一个键值对总是2,即使这个单词只包含1个字母。有人知道为什么吗?

if语句在完成for循环后应用,因此它只在最后一个字符上加1。这是缩进的问题。即使你在循环内写if条件,它也不会正确,因为你的逻辑。为每个字母分配dict[letter] = 1。然后检查if letter in dict,使其两次加1。使用else条件代替。

def is_isogram(string):
dict = {}
for letter in string:
if letter in dict:
dict[letter] += 1
else:
dict[letter] = 1
return dict
print(is_isogram("Dermatoglyphics"))

或者你可以像这样使用count函数

def is_isogram(string):
dict = {}
for letter in string:
dict[letter] = string.count(letter)
return dict
print(is_isogram("Dermatoglyphics"))

为每个字母设置1,然后增加最后一个字母。我想你的意思是把if放在for块里。

下面是一个工作版本:

def is_isogram(string):
dct = {}
for letter in string:
if letter in dct:
dct[letter] += 1
else:
dct[letter] = 1
return dct

print(is_isogram("Dermatoglyphics"))

背后的逻辑:如果字母已经存在,则增加计数器。否则用counter=1初始化。

编辑:将dict更改为dct,因为dict是python内置名称,如@Michael建议的。

由于您的函数命名为is_isogram(),它应该返回一个布尔值。这个弦要么是等值线,要么不是。一个很大的好处是,一旦发现重复项,就会停止迭代。

你不需要使用dict。这并不是一个坏主意,但是要检测等值图,你不需要计算每个字母出现的次数。你只需要测试一下会员资格。set更合适。像字典一样,但是没有值。

def is_isogram(word: str) -> bool:
used_letters = set()
for letter in word:
if letter in used_letters:
return False
else:
used_letters.add(letter)
return True
is_isogram("Dermatoglyphics")  # True
is_isogram("DDermatoglyphics")  # False

您的代码完全按照预期工作,它为每个字母分配1,然后由于您的if条件不在循环中,它将最后一个字符(字母)加1。

我对你的代码做了一些修改。

def is_isogram(string):
dict = {}
for letter in string:
dict[letter] = 0
for letter in string:
dict[letter] += 1
return dict

print(is_isogram("telegram"))

我所做的是首先将所有字母添加到字典中,然后使用另一次扫描来计数每个字母。

这个函数的复杂度是O(n),我认为这比其他答案要快

这是一个定时执行
这个答案:https://onlinegdb.com/lMC-Qn76D
其他答案:https://onlinegdb.com/eeV0IFN5J

如果我说错了请纠正我

相关内容

  • 没有找到相关文章

最新更新