快的方法有一些还没看懂,过段时间看
1、笨方法
从题中可以看出要分2部分考虑 local name 和 domain name,所以设置了flag来标记是哪一部分;
考虑到“+”情况,local name中“+”后的内容到“@”全部删掉,但是在domain name中内容继续添加,就有设置了plus_flag来区分情况。plus_flag涉及到2次修改,碰到“+”和“@”都要进行修改。
int numUniqueEmails(vector<string>& emails) {
set<string> res;
for (int i=0; i < emails.size(); ++i) {
bool flag = false;
bool plus_flag = false;
string tmp = "";
for (int j=0; j < emails[i].size(); ++j) {
if (emails[i][j] == '+') {
plus_flag = true;
continue;
}
if (emails[i][j] == '@') {
flag = true;
plus_flag = false;
tmp += emails[i][j];
continue;
}
if (plus_flag) {
continue;
}
if (!flag && emails[i][j] == '.') {
continue;
}
tmp += emails[i][j];
}
res.insert(tmp);
}
return res.size();
}