1
class Solution {
2
public:
3
vector<string> digits{"zero", "one", "two", "three", "four",
4
"five", "six", "seven", "eight", "nine"};
5
void fun(int x, string &ans, vector<int> &m) {
6
for (int i = x; i <= 9; i += 2) {
7
string t = digits[i];
8
if (t.length() == 3) {
9
if (m[t[0] - 'a'] > 0 && m[t[1] - 'a'] > 0 && m[t[2] - 'a'] > 0) {
10
int min_o = min({m[t[0] - 'a'], m[t[1] - 'a'], m[t[2] - 'a']});
11
m[t[0] - 'a'] -= min_o;
12
m[t[1] - 'a'] -= min_o;
13
m[t[2] - 'a'] -= min_o;
14
while (min_o--) ans += (char)(i + '0');
15
}
16
} else if (t.length() == 4) {
17
if (m[t[0] - 'a'] > 0 && m[t[1] - 'a'] > 0 && m[t[2] - 'a'] > 0 && m[t[3] - 'a'] > 0) {
18
int min_o = min({m[t[0] - 'a'], m[t[1] - 'a'], m[t[2] - 'a'], m[t[3] - 'a']});
19
m[t[0] - 'a'] -= min_o;
20
m[t[1] - 'a'] -= min_o;
21
m[t[2] - 'a'] -= min_o;
22
m[t[3] - 'a'] -= min_o;
23
while (min_o--) ans += (char)(i + '0');
24
}
25
} else if (t.length() == 5) {
26
if (m[t[0] - 'a'] > 0 && m[t[1] - 'a'] > 0 && m[t[2] - 'a'] > 0 && m[t[3] - 'a'] > 0 &&
27
m[t[4] - 'a'] > 0) {
28
int min_o =
29
min({m[t[0] - 'a'], m[t[1] - 'a'], m[t[2] - 'a'], m[t[3] - 'a'], m[t[4] - 'a']});
30
m[t[0] - 'a'] -= min_o;
31
m[t[1] - 'a'] -= min_o;
32
m[t[2] - 'a'] -= min_o;
33
m[t[3] - 'a'] -= min_o;
34
m[t[4] - 'a'] -= min_o;
35
while (min_o--) ans += (char)(i + '0');
36
}
37
}
38
}
39
}
40

41
string originalDigits(string s) {
42
string ans;
43
vector<int> m(26, 0);
44
for (auto x : s) m[x - 'a']++;
45
fun(0, ans, m);
46
fun(1, ans, m);
47
sort(ans.begin(), ans.end());
48
return ans;
49
}
50
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0