389. Find the Difference

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"

Example 3:

Input: s = "a", t = "aa"
Output: "a"

Example 4:

Input: s = "ae", t = "aea"
Output: "a"

 

Constraints:

  • 0 <= s.length <= 1000
  • t.length == s.length + 1
  • s and t consist of lower-case English letters.

Rust Solution

struct Solution;

use std::collections::HashMap;

impl Solution {
    fn find_the_difference(s: String, t: String) -> char {
        let mut hm: HashMap<char, i32> = HashMap::new();
        for c in t.chars() {
            let e = hm.entry(c).or_default();
            *e += 1;
        }
        for c in s.chars() {
            let e = hm.entry(c).or_default();
            *e -= 1;
        }
        for (&c, &v) in hm.iter() {
            if v == 1 {
                return c;
            }
        }
        unreachable!()
    }
}

#[test]
fn test() {
    let s = "abcd".to_string();
    let t = "abcde".to_string();
    let c = 'e';
    assert_eq!(Solution::find_the_difference(s, t), c);
}

Having problems with this solution? Click here to submit an issue on github.