Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# LeetCode

## 問題:
## 問題: [929. Unique Email Address](https://leetcode.com/problems/unique-email-addresses/description/)

## 前提

Expand Down
18 changes: 18 additions & 0 deletions step1.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,22 @@
# Step 1

- emailを@で区切る
- @の前から'.'を取り除く
- @の前を'+'で区切る
- @の前と@の後ろをタプルにしてsetに入れる
- setの要素数を返す

```python
class Solution:
def numUniqueEmails(self, emails: List[str]) -> int:
res = set()
for email in emails:
local_name, domain_name = email.split("@")
cleansed_local_name = local_name.replace(".", "").split("+")[0]
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

複数の処理が 1 行に押し込められており、やや見にくいように感じました。 2 行に分けるとよいと思います。

cleansed_local_name = local_name.replace(".", "")
cleansed_local_name = cleansed_local_name.split("+")[0]

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

比較のために正規化をすることを canonicalize と呼びます。 canonicalized_local_name はいかがでしょうか?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ご指摘いただきありがとうございます。以後使わせていただきます。

res.add((cleansed_local_name, domain_name))
return len(res)
```

時間計算量: O(n \* m)

空間計算量: O(n)
8 changes: 8 additions & 0 deletions step2.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,12 @@
# Step 2

```python
class Solution:
def numUniqueEmails(self, emails: List[str]) -> int:
unique_emails = set()
for email in emails:
local_name, domain_name = email.split("@")
cleansed_local_name = local_name.replace(".", "").split("+")[0]
unique_emails.add((cleansed_local_name, domain_name))
return len(unique_emails)
```
14 changes: 14 additions & 0 deletions step3.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
# Step 3

```python
class Solution:
def numUniqueEmails(self, emails: List[str]) -> int:
unique_emails = set()
for email in emails:
local_name, domain_name = email.split("@")
cleansed_local_name = local_name.replace(".", "").split("+")[0]
unique_emails.add((cleansed_local_name, domain_name))
return len(unique_emails)
```

1回目: 1分57秒

2回目: 1分33秒

3回目: 1分38秒