본문 바로가기

Algorithm/String

(C++) - LeetCode (easy) 929. Unique Email Addresses

반응형

https://leetcode.com/problems/unique-email-addresses/description/

 

Unique Email Addresses - LeetCode

Can you solve this real interview question? Unique Email Addresses - Every valid email consists of a local name and a domain name, separated by the '@' sign. Besides lowercase letters, the email may contain one or more '.' or '+'. * For example, in "alice@

leetcode.com

구현 문제였습니다.

📕 풀이방법

📔 풀이과정

1. emails의 원소를 돌며 다음을 수행합니다.1-1. localName과 DomainName으로 나눠줍니다.1-2. '.'을 없애거나 '+'가 있으면 뒤의 문자열을 무시하는 filter과정을 localName에 대해서만 수행해줍니다.1-3. filtering된 localName과 DomainName을 다시 합쳐 email형식으로 만들어 줍니다.

 

2. set에 filtering된 emails의 원소들을 넣어줍니다.

📔 정답 출력 | 반환

set의 size를 반환합니다.


📕 Code

📔 C++

using pss = pair<string,string>;

class Solution {
public:
    pss getLocalAndDomainName(string &email) {
        string localName, domainName;
        auto idx = email.find('@');
        return {email.substr(0, idx), email.substr(idx)};
    }

    string getFilteredName(string localName) {
        string filtered;
        for(auto c : localName) {
            if(c == '+') return filtered;
            if(c == '.') continue;
            filtered += c;
        }
        return filtered;
    }

    void filterEmails(vector <string> &emails) {
        for(auto &e : emails) {
            pss localAndDomainName = getLocalAndDomainName(e);
            e = getFilteredName(localAndDomainName.first) + localAndDomainName.second;
        }
    }

    int numUniqueEmails(vector<string>& emails) {
        filterEmails(emails);
        set <string> s;
        for(auto e: emails) s.insert(e);
        return s.size();
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.