是否为同源词

Python挑战练习-21

编写一个程序来检查一个单词是否为同源词。 同源词是指不包含任何重复字母的单词,例如brownfoxquick等。

  • 定义函数is_string_isogram(),参数为一个单词word
  • 在函数内,如果单词是同源词,则返回True,否则返回False

# 将单词转换为小写 word = word.lower()

方法一:使用集合来辅助判断

def is_string_isogram(word):
    word = word.lower()
    seen_letters = set()
    for char in word:
        if char in seen_letters:
            return False
        seen_letters.add(char)
    return True

代码解释:

创建一个空集合 seen_letters,用于记录已经出现过的字母。通过 for 循环遍历单词中的每一个字母,在循环中,使用if判断当前字母是否已经在集合中出现过,如果已经出现过,说明单词存在重复字母,不符合同源词的定义,直接返回 False;如果当前字母不在集合中,就将其添加到集合中,标记这个字母已经出现过了。当整个单词遍历完后,如果都没有发现重复的字母,说明这个单词是同源词,通过 return True 返回 True

方法二:使用字典

def is_string_isogram(word):
    word = word.lower()
    letter_count = {}
    for char in word:
        letter_count[char] = letter_count.get(char, 0) + 1
        if letter_count[char] > 1:
            return False
    return True

代码解释: 

  • 创建一个空字典 letter_count,用于统计每个字母在单词中出现的次数。

  • 在循环遍历单词的过程中,对于每个字母 char,通过 letter_count[char] = letter_count.get(char, 0) + 1 来更新其出现次数。如果这个字母是第一次出现,letter_count.get(char, 0) 会返回默认值 0,然后加 1 表示出现了 1 次;如果已经出现过,就获取其当前次数并加 1。接着使用 if letter_count[char] > 1: 判断该字母的出现次数是否大于 1,如果大于 1,说明存在重复字母,返回 False

  • 当整个单词遍历完后,如果没有出现字母次数大于 1 的情况,说明单词是同源词,返回 True

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值