问题描述
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例
输入:s = "abcd", t = "abcde"
输出:"e"
解释:'e' 是那个被添加的字母。
思路
因为有两个数组,所以我们可以确定一件事,那就是除了那个添加的字母之外,其他字母出现的字母一定为偶数。
使用位运算里面的异或运算,因为我们知道异或运算的法则为相同为0,所以对两个数组进行一轮异或运算,最终剩下的就是那个不同的字母了。
代码
class Solution:
def findTheDifference(self, strs: str, tmps: str) -> str:
if not strs:
return tmps
res = 0
for i in range(len(strs)):
res ^= ord(strs[i]) ^ ord(tmps[i])
return chr(res ^ ord(tmps[-1]))
复杂度分析
- 时间复杂度:O(n)
- 空间复杂度:O(1)