6.找到给定字符串中的不同字符
题目描述
在不考虑字符排列的条件下,对于相差只有一个字符的两个字符串,实现一个算法来识别相差的那个字符。要求如下:
当传入的字符串为 ‘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')
lenth1 = len(str1)
lenth2 = len(str2)
temp1 = ""
temp2 = ""
if lenth1 > lenth2:
temp1 += str1
temp2 += str2
else:
temp1 += str2
temp2 += str1
temp1 = sorted(temp1)
temp2 = sorted(temp2)
lenth = len(temp2)
for i in range(lenth):
if temp1[i] != temp2[i]:
return temp1[i]
return temp1[lenth]
题解代码
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)
题解代码思路分析
题解的解法使用了异或的性质
x^x=0