1
class Solution {
2
public:
3
string smallestSubsequence(string s, int k, char letter, int repetition) {
4
int count = 0, inStack = 0;
5
int n = s.size();
6
for (int i = 0; i < n; i++)
7
if (s[i] == letter) count++;
8
string res = "";
9
int i = 0;
10
while (i < n) {
11
if (res.empty())
12
res.push_back(s[i]);
13
else {
14
while (!res.empty() && res.back() > s[i] && n - i + res.size() > k) {
15
if (res.back() == letter && count + inStack - 1 >= repetition) {
16
res.pop_back();
17
inStack--;
18
} else if (res.back() == letter)
19
break;
20
else
21
res.pop_back();
22
}
23
if (s[i] == letter) {
24
inStack++;
25
count--;
26
}
27
res.push_back(s[i]);
28
}
29
i++;
30
}
31
string ret = "";
32
for (int i = 0; i < res.size(); i++) {
33
if (res[i] == letter && repetition > 0 && k > 0) {
34
repetition--;
35
ret += res[i];
36
k--;
37
} else if (k - repetition > 0) {
38
k--;
39
ret += res[i];
40
}
41
}
42
return ret;
43
}
44
};
45
/*
46
if(find helpful) {
47
do upvote(); // thanks
48
}
49
*/

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0