-
Notifications
You must be signed in to change notification settings - Fork 119
/
Copy pathRemove All Adjacent Duplicates in String II.cpp
66 lines (44 loc) · 1.21 KB
/
Remove All Adjacent Duplicates in String II.cpp
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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#define pp pair< int , char >
class Solution {
public:
string removeDuplicates(string s, int k) {
int n=s.size();
stack< pp > stk;
int i=0;
while(i<n)
{
int count=1;
char ch=s[i];
while((i+1)<n && s[i]==s[i+1])
{
i++;
count++;
}
int c=0;
if(!stk.empty() && stk.top().second==ch)
{
c+=stk.top().first;
stk.pop();
}
count+=c;
count=count%k;
if(count!=0)
{
stk.push({count , ch});
}
i++;
}
string str="";
while(!stk.empty())
{
int count=stk.top().first;
while(count--)
{
str.push_back(stk.top().second);
}
stk.pop();
}
reverse(str.begin() , str.end());
return str;
}
};