389. Find the Difference

Find the Difference - LeetCode

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.

  • code
class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        cs, ct = Counter(s), Counter(t)
        for k, v in ct.items():
            if k not in cs or ct[k] != cs[k]: return k
  • code
class Solution:
    def findTheDifference(self, s: str, t: str) -> str:
        counter_s = Counter(s)

        for ch in t:
            if ch not in counter_s or counter_s[ch] == 0:
                return ch
            else:
                counter_s[ch] -= 1
  • code
class Solution:
    def findTheDifference(self, s: str, t: str) -> str:

        # Initialize ch with 0, because 0 ^ X = X
        # 0 when XORed with any bit would not change the bits value.
        ch = 0

        # XOR all the characters of both s and t.
        for char_ in s:
            ch ^= ord(char_)

        for char_ in t:
            ch ^= ord(char_)

        # What is left after XORing everything is the difference.
        return chr(ch)