easy LC #929 ↗

PROBLEM 04

同じ受信箱へ届くアドレスを数える

メールアドレスのローカル部を正規化し、実際の受信箱数を求めます。

目安 30分 set · normalization · string

メールサービスでは、アドレスの @ より前に次の規則があります。

  • . は配送時に無視される
  • 最初の + から @ までの文字は無視される
  • @ より後のドメインには、どちらの規則も適用しない

numUniqueEmails(emails) は、実際に異なる受信箱へ届くアドレス数を返してください。

入力:
["team.alpha+news@sample.dev", "teamalpha@sample.dev", "team.beta@sample.dev"]
出力: 2

制約

  • 1 <= emails.length <= 20,000
  • 各アドレスはローカル部、@、ドメインからなる
  • +. はローカル部にだけ現れる

対応する問題: LeetCode #929 Unique Email Addresses

STEPWISE HINTS

ヒント

01考え方の方向

各アドレスを同じ規則で正規化してから、異なる値の個数を数えます。

02使うデータ構造

@ より前だけを加工します。最初の + 以降を捨て、残った . を削除します。ドメイン側は変えません。

03擬似コード

email を @ で分ける。local = local.split('+')[0].replaceAll('.', '')。local + '@' + domain を Set に追加し、size を返す。

AFTER ACCEPTED

解説

AC 後に解説が開きます

まずは自分の言葉で方針を説明し、コードに落としてみましょう。