一. 题目
-
题目
-
示例
二. 方法一
-
解题思路
- 先统计每个字符串中字符串的个数
- 再遍历map2
- 如果遍历的元素不在map1, 或者遍历的元素个数和map中元素个数不相等, 则说明该元素就是插入的那个元素
-
解题代码
def findTheDifference(self, s: str, t: str) -> str: map1 = collections.Counter(s) map2 = collections.Counter(t) for key in map2: if key not in map1: return key elif map1[key] != map2[key]: return key
-
分析
时间复杂度: O(n)
空间复杂度: O(n)
三. 方法二: ASCII码做差(题解中了解的)
-
解题思路
- 求出两个字符串中所有元素的ASCII码的和
- 做差, 结果就是插入的元素的ASCII码
- 再将该ASCII码转成对应的字符即可
-
解题代码
def findTheDifference(self, s: str, t: str) -> str: return chr(sum(map(ord, t)) - sum(map(ord, s)))
-
分析
时间复杂度: O(n)
空间复杂度: O(n)