Skip to main content
Back to problems
#884
Easy Algorithms

Uncommon words from two sentences

Hash Table String Counting
75.6% acceptance
Feb 22, 2026
1897
209
A sentence is a string of single-space separated words where each word consists only of lowercase letters. A word is uncommon if it appears exactly once in one of the sentences, and does not appear in the other sentence. Given two sentences s1 and s2, return a list of all the uncommon words. You may return the answer in any order.

Solution

Rust
Time O(n)
Space O(n)
LeetCode
solution.rs
/*
 * A sentence is a string of single-space separated words where each word consists only of lowercase letters.
 * A word is uncommon if it appears exactly once in one of the sentences, and does not appear in the other sentence.
 * Given two sentences s1 and s2, return a list of all the uncommon words. You may return the answer in any order.
 * Example 1:
 * Input: s1 = "this apple is sweet", s2 = "this apple is sour"
 * Output: ["sweet","sour"]
 * Explanation:
 * The word "sweet" appears only in s1, while the word "sour" appears only in s2.
 * Example 2:
 * Input: s1 = "apple apple", s2 = "banana"
 * Output: ["banana"]
 * Constraints:
 * 1 <= s1.length, s2.length <= 200
 * s1 and s2 consist of lowercase English letters and spaces.
 * s1 and s2 do not have leading or trailing spaces.
 * All the words in s1 and s2 are separated by a single space.
 */

use std::collections::HashMap;

impl Solution {
  pub fn uncommon_from_sentences(s1: String, s2: String) -> Vec<String> {
    let mut cnt: HashMap<String, usize> = HashMap::new();
    for w in s1.split_whitespace().chain(s2.split_whitespace()) {
      *cnt.entry(w.to_string()).or_default() += 1;
    }
    cnt.into_iter().filter(|(_, c)| *c == 1).map(|(w, _)| w).collect()
  }
}