389. Find the Difference

🟩 Easy

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

My Solution

func findTheDifference(s string, t string) byte {
    n := min(len(s), len(t))

    m := map[byte]int{}
    for i:=0; i<n; i++ {
        m[s[i]]++
        m[t[i]]--
    }
    m[t[len(t)-1]]--

    for k, v := range m {
        if v != 0 {
            return k
        }
    }
    return t[len(t)-1]
}

Optimal Solution

func findTheDifference(s string, t string) byte {
    result := byte(0)
    for i := 0; i < len(s); i++ {
        result ^= s[i]
        result ^= t[i]
    }
    result ^= t[len(t)-1]
    return result
}
result

Leetcode: link

Last updated

Was this helpful?