[Xâu Ký Tự Cơ Bản]. Bài 27. Kiểm tra email

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
28Tech
Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Kotlin, Pascal, PyPy, Python, Scratch

Một địa chỉ email hợp lệ nếu :

• Bắt buộc kết thúc bằng 1 trong các đuôi : @gmail.com, @28tech.com.vn, @yahoo.com, @hotmail.com

• Không được chứa các ký tự đặc biệt và dấu cách mà chỉ được chứ các kí tự là chữ số và chữ cái, ngoại trừ @, dấu chấm và dấu gạch dưới

• Không được chứa nhiều hơn 1 ký tự @

Bạn được cung cấp 1 loạt các email, bạn hãy xác định xem email này có hợp lệ hay không, nếu hợp lệ in ra YES, ngược lại in ra NO


Đầu vào

• Dòng 1 là T : số lượng email

T dòng tiếp theo chứa các email


Giới hạn

• 1<=T<=1000

• Email là xâu ký tự có độ dài không quá 1000


Đầu ra

In ra đáp án từng test trên mỗi dòng


Ví dụ :

Input 01
10
1b2ac2adcd@mail.com
2d2414d4eedb@gmail.com
c3ec3214dd14de3a4@teche@.com
13c12b4ae4@28tech.com.vn
de12ad131ca242221@yahoo.com
de132241c12bbb414e@yahoo.com
2b1121cb1144@apple.com
312dc324144ceab4@mail.com
e22cac1b144acdcd34@hotmail.com
e4d3e2c4b3b421442c@xyz.com
Output 01
NO
YES
NO
YES
YES
YES
NO
NO
YES
NO

Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    bengokyeuanh99  đã bình luận lúc 6, Tháng 9, 2025, 17:43

    Full AC

    include <iostream>

    include <string>

    include <unordered_set>

    using namespace std;

    bool isValidEmail(const string& email) { static const unordered_set<string> validDomains = { "@gmail.com", "@28tech.com.vn", "@yahoo.com", "@hotmail.com" };

    int atCount = 0;
    for (char c : email) {
        if (!(isalnum(c) || c == '@' || c == '.' || c == '_')) return false;
        if (c == '@') atCount++;
    }
    if (atCount != 1) return false;
    
    for (const auto& d : validDomains) {
        if (email.size() >= d.size() &&
            email.compare(email.size() - d.size(), d.size(), d) == 0) {
            return true;
        }
    }
    return false;
    

    }

    int main() { ios::syncwithstdio(false); cin.tie(nullptr);

    int t;
    cin >> t;
    string email;
    while (t--) {
        cin >> email;
        cout << (isValidEmail(email) ? "YES" : "NO") << '\n';
    }
    return 0;
    

    }