Python计算两个给定单词之间相同字符的数量

Python每日一练


问题:

编写一个程序来计算两个给定单词之间相同字符的数量。

需要考虑字符是区分大小写的(即a和A是不同的字符)。

例如,单词cookie和cool有两个字符相同:c和o。因此,输出应该是2。

另一方面,单词Blow和beer没有相同的字符,因为B和b视为不同的字符。

定义函数shared_chars_count(),有两个参数:word1和word2。
该函数应返回两个单词中相同字母的数量。
考虑字符区分大小写。
一个相同字符计数一次。

题目来源:PythonTip
https://edu.py2fun.com/


代码实现

代码如下(示例):

def shared_chars_count(word1, word2):
    # 此处编写代码
    new_s1 = []         # 字符串去重
    for char in word1:
        if char not in new_s1:
            new_s1.append(char)     # 遍历字符串并加入非重复字符的列表
    new_s1 = "".join(new_s1)        # 转换为字符串
    
    new_s2 = []
    for char in word2:
        if char not in new_s2:
            new_s2.append(char)
    new_s2 = "".join(new_s2)  

    count = 0       # 统计相同数字
    for i in new_s1:
        if i in new_s2:
            count += 1
    
    return count


# 获取输入
word1 = input()
word2 = input()

# 调用函数
print(shared_chars_count(word1, word2))

示例输入:

cookie
cool

示例输出:

2


总结

根据题目的描述我们可以把这个问题拆分成两个部分来解决:
第一部分,题目要求相同字符只统计一次,而单词里难免会出现一个字母多次出现的情况,因此首先对输入的两个字符串各自完成去重操作;
第二部分,对完成去重的两个字符串进行统计比较相同字符即可。
这就是本次题目的解题思路。

这里我们再补充一点关于字符串去重的问题。代码中我们通过自定义方法完成对字符串的去重操作,当然我们也可以利用Python中的某些数据类型的特点解决这个问题,例如集合数据类型会自动去除重复元素,使用set()构造函数将字符串转换为集合,再将集合转换为字符串,同样也可完成字符串去重操作。

代码如下(示例):

s = "cookie"
new_s = list(set(s))  # 转换为集合再转换为列表
new_s = "".join(set(s))  # 转换为集合再转换为字符串

示例输出:

‘cokie’

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值