-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy path0831.cpp
More file actions
38 lines (33 loc) · 1003 Bytes
/
Copy path0831.cpp
File metadata and controls
38 lines (33 loc) · 1003 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
class Solution {
public:
string maskPII(string &s) const {
const auto at = s.find('@');
string res;
if (at != string::npos) {
res += tolower(s[0]);
res += "*****";
res += tolower(s[at - 1]);
for (int i = at; i < size(s); i++)
res += tolower(s[i]);
} else {
int digits = 0;
for (const char c : s)
digits += isdigit(c);
if (digits == 10)
res += "***-***-";
else if (digits == 11)
res += "+*-***-***-";
else if (digits == 12)
res += "+**-***-***-";
else if (digits == 13)
res += "+***-***-***-";
string extra;
for (int i = size(s) - 1; size(extra) < 4; i--) {
if (!isdigit(s[i])) continue;
extra = s[i] + extra;
}
res += extra;
}
return res;
}
};