929. Unique Email Addresses

LeetCode easy original: C# #csharp #easy #graph #hash-table #leetcode #matrix #string
Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.

Вам дана сеть из n узлов, представленная в виде đồ thịа с матрицей смежности n x n, где i-й узел непосредственно связан с j-м узлом, если graph[i][j] == 1. Некоторые узлы изначально заражены вредоносным ПО. Если два узла соединены напрямую и хотя бы один из них заражен вредоносным ПО, то оба узла будут заражены вредоносным ПО. Такое распространение вредоносного ПО будет продолжаться до тех пор, пока больше не останется ни одного узла, зараженного таким образом. Предположим, что M(initial) - это конечное number узлов, зараженных вредоносным ПО, во всей сети после прекращения распространения вредоносного ПО. Мы удалим ровно один узел из initial, полностью удалив его и все связи от этого узла к любому другому узлу. return узел, который, если его удалить, минимизирует M(initial). Если для минимизации M(initial) можно удалить несколько узлов, return такой узел с наименьшим индексом.

Ví dụ:

Input: emails = ["test.email+alex@leetcode.com","test.e.mail+bob.cathy@leetcode.com","testemail+david@lee.tcode.com"]

Output: 2

C# lời giải

đã khớp/gốc
using System;
using System.Collections.Generic;
public class Solution {
    public int NumUniqueEmails(string[] emails) {
        var uniqueEmails = new HashSet<string>();
        foreach (var email in emails) {
            var parts = email.Split(new char[] { '@' });
            var local = parts[0].Split(new char[] { '+' })[0].Replace(".", "");
            uniqueEmails.Add($"{local}@{parts[1]}");
        }
        return uniqueEmails.Count;
    }
}

C++ lời giải

bản nháp tự động, xem lại trước khi gửi
#include <bits/stdc++.h>
using namespace std;

// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
    public int NumUniqueEmails(vector<string> emails) {
        var uniqueEmails = new HashSet<string>();
        foreach (var email in emails) {
            var parts = email.Split(new char[] { '@' });
            var local = parts[0].Split(new char[] { '+' })[0].Replace(".", "");
            uniqueEmails.push_back($"{local}@{parts[1]}");
        }
        return uniqueEmails.size();
    }
}

Java lời giải

bản nháp tự động, xem lại trước khi gửi
import java.util.*;
import java.math.*;

// Auto-generated Java draft from the C# solution. Review API differences before LeetCode submit.
public class Solution {
    public int NumUniqueEmails(String[] emails) {
        var uniqueEmails = new HashSet<String>();
        foreach (var email in emails) {
            var parts = email.Split(new char[] { '@' });
            var local = parts[0].Split(new char[] { '+' })[0].Replace(".", "");
            uniqueEmails.add($"{local}@{parts[1]}");
        }
        return uniqueEmails.size();
    }
}

JavaScript lời giải

đã khớp/gốc
var numUniqueEmails = function(emails) {
    const uniqueEmails = new Set();
    for (const email of emails) {
        let [local, domain] = email.split('@');
        local = local.split('+')[0].replace(/\./g, '');
        uniqueEmails.add(`${local}@${domain}`);
    }
    return uniqueEmails.size;
};

Python lời giải

đã khớp/gốc
def numUniqueEmails(emails):
    unique_emails = set()
    for email in emails:
        local, domain = email.split('@')
        local = local.split('+')[0].replace('.', '')
        unique_emails.add(f"{local}@{domain}")
    return len(unique_emails)

Go lời giải

đã khớp/gốc
using System;
using System.Collections.Generic;

public class Solution {
    public int NumUniqueEmails(string[] emails) {
        var uniqueEmails = new HashSet<string>();
        foreach (var email in emails) {
            var parts = email.Split('@');
            var local = parts[0].Split('+')[0].Replace(".", "");
            uniqueEmails.Add($"{local}@{parts[1]}");
        }
        return uniqueEmails.Count;
    }
}

Algorithm

Создать множество для хранения уникальных обработанных адресов электронной почты.

Для каждого адреса в emails:

Разделить адрес на локальное и доменное имя по символу '@'.

Обработать локальное имя:

Удалить все точки '.'.

Обрезать часть после символа '+'.

Объединить обработанное локальное имя и доменное имя.

Добавить результат в множество уникальных адресов.

Вернуть количество уникальных адресов в множестве.

😎

Vacancies for this task

việc làm đang hoạt động with overlapping task tags are đã hiển thị.

Tất cả việc làm
Chưa có việc làm đang hoạt động.