Description
You are given two strings s and t.
String t is generated by random shuffling string s and then add one more letter at a random position.
Return the letter that was added to t.
Example 1:
Input: s = “abcd”, t = “abcde”
Output: “e”
Explanation: ‘e’ is the letter that was added.
Example 2:
Input: s = “”, t = “y”
Output: “y”
Constraints:
0 <= s.length <= 1000
t.length == s.length + 1
s and t consist of lowercase English letters.
Solution
Dict
Use a dict to compare s
and t
Bit Manipulation
If the character appears both in s
and t
, then it must appear multipliers of 2. So we could use xor.
Time complexity: o ( m + n ) o(m+n) o(m+n). where m
and n
are lengths of s
and t
Space complexity: o ( 1 ) o(1) o(1)
Code
Dict
class Solution:def findTheDifference(self, s: str, t: str) -> str:chars = {}for ch in s:chars[ch] = chars.get(ch, 0) + 1for ch in t:if ch not in chars:return chchars[ch] -= 1if chars[ch] == 0:chars.pop(ch)return list(chars.keys())[0]
Bit Manipulation
class Solution:def findTheDifference(self, s: str, t: str) -> str:res = 0for ch in s:res ^= ord(ch)for ch in t:res ^= ord(ch)return chr(res)