请大佬指正纠错!!!!
挑战介绍
在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下:
当传入的字符串为 '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码