389. 找不同
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
这道题虽然是个简单题,但是有个很有意思的解法,我第一次做是用的hash表存储,然后遍历hash表的values值,找到为奇数的那个,题解给了个更好的做法,那就是异或
异或:
· a异或a = 0
· 0异或a = a
他主要用到了上述两点
class Solution:
def findTheDifference(self, s: str, t: str) -> str:
a = 0
for i in s:
a ^= ord(i)
for j in t:
a ^= ord(j)
return chr(a)
遍历两个字符串(以ascii码的形式),相同的字符肯定出现偶数次,添加的字符出现奇数次,因此用异或相抵消就可以很好得得到结果
时间复杂度 O(N)
空间复杂度 O(1)