python百题大冲关-找到给定字符串中的不同字符

DaLongggggg 等级 323 0 0

请大佬指正纠错!!!!

挑战介绍

在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下:

当传入的字符串为 'aad' 和 'ad' 时,结果为 'a'。
当传入的字符串为 'aaabccdd' 和 'abdcacade' 时,结果为 'e'

本次挑战中,你需要在 diff.py 文件中补充函数 find_diff 的空缺部分。

find_diff 函数接受两个参数,str1,str2 用于指定传入的相差只有一个字符的两个字符串;
find_diff 函数输出只有一个字符的字符串。

你需要补充 find_diff 函数,使 find_diff 函数可以识别传入的 str1,str2 之间相差的那个字符。要求如下:

对于传入的两个字符串,返回它们之间相差的那个字符;
如果传入的字符串有 None ,需要使用 raise 语句显示 TypeError。
class Solution(object):

    def find_diff(self, str1, str2):
        if str1 is None or str2 is None:
            raise TypeError('str1 or str2 cannot be None')
        result = 0
        for char in str1:
            result ^= ord(char)
        for char in str2:
            result ^= ord(char)
        return chr(result)

需要返回相差的字符 便通过异或^来筛选 异或相同为0 不同为1 同时在两个字符串中循环遍历字符 相同的字符返回零 不同的字符返回ASCII码值 最后返回 再由chr转回字符

异或“ ^ =”在Python中是什么意思? raise是一个抛出指定异常Python学习:raise语句 chr()是把数字转成对应字符 ord()是把字符转成对应ASCII码

收藏
评论区