重复字符的数量

Python挑战练习-进阶挑战49

编写一个程序来计算字符串中重复出现多次的不同字符的数量。

例如,在单词Programming中:

  • r 重复出现了2次

  • g 重复出现了2次

  • m 重复出现了2次

由于3个不同的字符重复出现多次,因此重复字符的数量为3

  • 定义函数count_duplicate_chars(),参数为input_string

  • 在函数内部,计算并返回字符串中重复字符的数量。


分析:①返回的是一个数量,所以想到可以返回len( )

②可通过for循环遍历,把重复出现的字符添加到一个新的列表(这里需要去重复的操作),然后再求这个列表长度

def count_duplicate_chars(input_string):
    # 在此处编写你的代码
    result=[]
    for ch in input_string:
        if input_string.count(ch)>=2:
            result.append(ch)           
    re=list(set(result))
    return len(re)

# 获取用户输入
test_string = input()

# 调用函数
result = count_duplicate_chars(test_string)
print(result)

代码解释:

  • re = list(set(result))

    • set(result):将 result 列表转换为一个集合。集合的特点是元素不重复,所以重复的字符会被自动去除。例如,如果 result 列表包含 ['a', 'a', 'b', 'b'],将其转换为集合后会变成 {'a', 'b'}

    • list(set(result)):将集合转换回列表。这是因为集合是无序且不支持索引访问的,而列表是有序且支持索引访问的,将集合转换为列表可以方便后续操作或符合某些返回结果的要求。


代码潜在问题:

对于较长的字符串,input_string.count(ch) 在 for 循环中对每个字符都要对整个字符串进行计数操作,这可能会导致性能下降,因为 count() 方法每次调用都要遍历整个字符串。可以使用字典存储字符计数,这样可以避免重复计数,提高性能。

好处:只对输入字符串进行一次遍历,而不是对每个字符都进行多次计数操作

def count_duplicate_chars(input_string):
    char_count = {}
    for ch in input_string:
        char_count[ch] = char_count.get(ch, 0) + 1
    result = [ch for ch, count in char_count.items() if count >= 2]
    return len(set(result))

 代码解释:

  • char_count = {}:创建一个空字典 char_count 用于存储每个字符及其出现的次数。

  • for ch in input_string::遍历输入字符串,对于每个字符 ch,使用 char_count.get(ch, 0) + 1 来更新字符的计数,如果字符不在字典中,其初始计数为 0,然后加 1。

  • result = [ch for ch, count in char_count.items() if count >= 2]:使用列表推导式找出出现次数大于或等于 2 的字符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值