如何查找字符串是否包含重复字符?

时间:2019-05-26 09:45:06

标签: python python-3.x

我已经编写了这段代码...我期望的答案不正确 在此代码中,如果字符串包含重复的字符,则应返回False 但在所有情况下都返回True

我已经做了很多编码以尝试解决这个问题 这是在JUPYTER笔记本中

def is_isogram(string):
   for i in string:
       if string.count(i) == 1:
           print('True')
       elif string.count(i) > 1:
           print('False')

我键入'Hello',它应该返回False,但在所有情况下都返回true

4 个答案:

答案 0 :(得分:4)

一旦您发现单词数大于1,就可以确保您的单词不是等轴测图,但是只有在检查了所有字母后,才能确保它是一个等距图:

def is_isogram(string):
    for i in string:
        if string.count(i) > 1:
            return False
    return True

print(is_isogram('pear'))
#  True

print(is_isogram('apple'))
# False

或者,如果您确实希望函数打印输出而不是返回输出,通常我不建议这样做:

def is_isogram(string):
    for i in string:
        if string.count(i) > 1:
            print('False')
            return
    print('True')

一种简短的经典解决方案是制作一个set个字符,并检查唯一字符的数量是否等于字符串的长度

def is_isogram2(string):
    return len(set(string)) == len(string)

答案 1 :(得分:1)

这是一个简单的代码段,可用于检查字符串是否包含重复的字符。遍历所有字符并检查它是否已经出现过。

def is_isogram(s):
    mp = {}
    for c in s:
        if c in mp.keys():
            return False
        mp[c] = 1 
    return True

答案 2 :(得分:0)

您正在为字符串中的每个字符打印TrueFalse。使用输入“ hello”运行代码将得到5行输出,其中两行True,两行False和另一行True

def is_isogram(string):
   for i in string:
       if string.count(i) > 1:
           return False
   return True

此代码将返回True或False。如果字符串中的任何字符出现多次,则该函数返回False并退出。如果没有一个以上的字符出现,则退出循环后返回True。

代码说明

如果有多个字母出现多次,则可以确保该单词不是等轴测图,即,您不必遍历整个字符串,只需找到一个重复的字符即可。但是要确保您有一个等轴测图,您需要检查整个字符串。

for i in string:

此语句逐个字符地遍历循环。

    if string.count(i) > 1:
        return False

if语句检查当前字符i在字符串中是否出现多次。如果是,函数将返回False。如果没有,它将继续进行下一次迭代。

    return True

如果控件已到达此语句,则意味着没有字符出现两次,因为该函数在到达此语句之前将返回False。因此,该函数返回True

考虑输入"hello"
迭代1:i = 'h'string.count('h') = 1
所以什么都不做
迭代2:i = 'e'string.count('e') = 1
所以什么都不做
迭代3:i = 'l'string.count('l') = 2
因此,返回False
如果您像这样调用函数print(is_isogram("hello"))False,则会被打印出来。

考虑其他输入"abcd" 迭代1:i = 'a'string.count('a') = 1
所以什么都不做
迭代2:i = 'b'string.count('b') = 1
所以什么都不做
迭代3:i = 'c'string.count('c') = 1
所以什么都不做
迭代4:i = 'd'string.count('d') = 1
所以,什么都不做

此时,循环已耗尽,并且执行了return True语句

答案 3 :(得分:0)

不是很pythonic,但是以您的原始样式:

def is_isogram(s):
    for i in s:
        if s.count(i) > 1:
            return False
    return True