Conversation
| https://github.com/potrue/leetcode/pull/14/files#diff-6a8efe56493bdbfeb045b7aa123660406ebdd5dd4f0a011935562d4eefb9ab46 | ||
|
|
||
| 上記を見ると,概ね実装方針は同じだった.ただ,以下が参考になった. | ||
| - listの代わりにset()を使っていたこと.setは重複を排除する. |
There was a problem hiding this comment.
要素数 n の list では in は O(n) かかります。set の場合は O(1) という違いもあります。
https://wiki.python.org/moin/TimeComplexity
|
|
||
| 上記を見ると,概ね実装方針は同じだった.ただ,以下が参考になった. | ||
| - listの代わりにset()を使っていたこと.setは重複を排除する. | ||
| - @が含まれない場合も考慮して,partitionを使用していたこと.partitionは区切り文字も返す. |
There was a problem hiding this comment.
Step3では、@ が含まれない場合、全体を local として受け入れて処理する方針になっていますね。
There was a problem hiding this comment.
そういう意味だったのですね.誤った認識をしてました.ご指摘ありがとうございます.
| local, domain = email.split("@") | ||
| local = local.replace(".", "") | ||
| local = local.split("+")[0] | ||
| email = local+"@"+domain |
There was a problem hiding this comment.
私はf-stringの方が結果の文字列が想像しやすくて好きです。Googleのスタイルガイドにも、
Use an f-string...(中略)...A single join with + is okay but do not format with +.
No: x = first + ', ' + second
とあり、私個人は、スタイルガイドにあるということは多くの人がf-stringの方を好ましく思うのだろう、と想定しています。
| for email in emails: | ||
| local, at, domain = email.partition("@") | ||
| local = local.replace(".", "") | ||
| local = local.split("+")[0] |
There was a problem hiding this comment.
先に無視される部分を決めた方が(+の処理を先に行う)効率的ではないでしょうか。
| local, domain = email.split("@") | ||
| local = local.replace(".", "") | ||
| local = local.split("+")[0] | ||
| email = local+"@"+domain |
There was a problem hiding this comment.
書き方として email = f"{local}@{domain}" というパターンもありますね。
https://docs.python.org/3/reference/lexical_analysis.html#formatted-string-literals
| - listの代わりにset()を使っていたこと.setは重複を排除する. | ||
| - @が含まれない場合も考慮して,partitionを使用していたこと.partitionは区切り文字も返す. | ||
|
|
||
| また,RFC規格という存在を知った.https://info.yamap.com/archives/3434 |
There was a problem hiding this comment.
私も間違った認識をしていましたが、 RFCは規格ではないようです.
| - @が含まれない場合も考慮して,partitionを使用していたこと.partitionは区切り文字も返す. | ||
|
|
||
| また,RFC規格という存在を知った.https://info.yamap.com/archives/3434 | ||
|
|
There was a problem hiding this comment.
There was a problem hiding this comment.
初めて正規表現の概念を知りました.正規表現を使って解き直してみます.ありがとうございます.
| 他の人の解答を参照する. | ||
| https://github.com/potrue/leetcode/pull/14/files#diff-6a8efe56493bdbfeb045b7aa123660406ebdd5dd4f0a011935562d4eefb9ab46 | ||
|
|
||
| 上記を見ると,概ね実装方針は同じだった.ただ,以下が参考になった. |
| local, at, domain = email.partition("@") | ||
| local = local.replace(".", "") | ||
| local = local.split("+")[0] | ||
| email = local + at + domain |
There was a problem hiding this comment.
partitionするときにlist型で取っておいてjoinすることもできそうですね
| def numUniqueEmails(self, emails: List[str]) -> int: | ||
| valid_emails = set() | ||
| for email in emails: | ||
| local, domain = email.split('@') |
There was a problem hiding this comment.
re.matchやre.fullmatchあたりを使うこともできると思います
https://docs.python.org/ja/3.13/library/re.html#re.match
Problem:
https://leetcode.com/problems/unique-email-addresses/description/