Description
Given two strings s and t which consist of only lowercase letters.
String t is generated by random shuffling string s and then add one more letter at a random position.
Find the letter that was added in t.
Example:
Input: s = "abcd" t = "abcde" Output: e Explanation: 'e' is the letter that was added.
描述
给定两个字符串 s 和 t,它们只包含小写字母。
字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。
请找出在 t 中被添加的字母。
示例:
输入: s = "abcd" t = "abcde" 输出: e 解释: 'e' 是那个被添加的字母
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/find-the-difference
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
思路
- 这道题和第 136 题 Single Number 非常类似,都可以用抑或做。
- 我们把 s 和 t 拼接起来,然后转换为数字,由于 t 中只有一个字符(数字)只出现了一次,其余的数字都出现了两次,此时这道题就完全转化成为了 136 题。
- 我们可以用抑或找出唯一出现一次的数字。
- 或者,我们对 t 的 ascii 码求和,减去 s 的 ascii 码和,也能得到唯一出现的 ascii 码。
import operator from functools import reduce class Solution: def findTheDifference(self, s: str, t: str) -> str: return chr(reduce(operator.xor, map(ord, s + t), 0)) class Solution2: def findTheDifference(self, s: str, t: str) -> str: return chr(sum(map(ord, t)) - sum(map(ord, s)))
源代码文件在 这里 。