Skip to main content
LeetCode 929, Easy. Topics: Array, Hash Table, String. View on LeetCode. Generate this problem as a practice environment: tested reference solution, 14 parametrized pytest cases, and a playground notebook:

Problem

<p>Every valid email consists of a local name and a domain name, separated by the <code>’@’</code> sign. Besides lowercase letters, the email may contain one or more <code>’.’</code> or <code>’+’</code>.</p> <ul> <li>For example, in <code>“alice@leetcode.com”</code>, <code>“alice”</code> is the <strong>local name</strong>, and <code>“leetcode.com”</code> is the <strong>domain name</strong>.</li> </ul> <p>If you add periods <code>’.’</code> between some characters in the <strong>local name</strong> part of an email address, mail sent there will be forwarded to the same address without dots in the local name. Note that this rule <strong>does not apply</strong> to domain names.</p> <ul> <li>For example, <code>“alice.z@leetcode.com”</code> and <code>“alicez@leetcode.com”</code> forward to the same email address.</li> </ul> <p>If you add a plus <code>’+’</code> in the <strong>local name</strong>, everything after the first plus sign will be <strong>ignored</strong>. This allows certain emails to be filtered. Note that this rule <strong>does not apply</strong> to domain names.</p> <ul> <li>For example, <code>“m.y+name@email.com”</code> will be forwarded to <code>“my@email.com”</code>.</li> </ul> <p>It is possible to use both of these rules at the same time.</p> <p>Given an array of strings <code>emails</code> where we send one email to each <code>emails[i]</code>, return <em>the number of different addresses that actually receive mails</em>.</p>

Examples

Constraints

  • 1 <= emails.length <= 100
  • 1 <= emails[i].length <= 100
  • emails[i] consist of lowercase English letters, ’+’, ’.’ and ’@’.
  • Each emails[i] contains exactly one ’@’ character.
  • All local and domain names are non-empty.
  • Local names do not start with a ’+’ character.
  • Domain names end with the “.com” suffix.
  • Domain names must contain at least one character before “.com” suffix.

Solution

Reference implementation from solution.py on GitHub, full suite in test_solution.py:

Complexity

Tags

NeetCode All.
Last modified on September 7, 2026