2020.12.18.##找不同
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 *t* 由字符串 *s* 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例 1:
输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。
示例 2:
输入:s = "", t = "y"
输出:"y"
解题思路:做过同一个数组,找出奇数个数的字母那的题,这很容易想位运算,相当于把这个数组给拆开了呗,一样的思路,既然拆开了,就把两个字符串并在一起,然后一直做异或运算,最后偶数对的相互抵消,只剩下最后一个奇数字母了,也就是我们需要找的字幕了。(ps:还可以用hash表计数,然后用第二个字符串来抵消hash表的数量,最后value为负数对应的key就是需要找的字母了)。位运算代码如下,一行解决:
from functools import reduce
class Solution(object):
def findTheDifference(self, s, t):
"""
:type s: str
:type t: str
:rtype: str
"""
return reduce(lambda x,y:chr(ord(x)^ord(y)),s+t)