Skip to content

Commit 63ee6d6

Browse files
committed
Runtime: 34 ms (Top 32.51%) | Memory: 13.40 MB (Top 25.91%)
1 parent e34f2bb commit 63ee6d6

File tree

1 file changed

+19
-39
lines changed

1 file changed

+19
-39
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,49 +1,29 @@
1+
// Runtime: 34 ms (Top 32.51%) | Memory: 13.40 MB (Top 25.91%)
2+
13
class Solution {
24
public:
35
int minInsertions(string s) {
4-
stack<int> st;
5-
int n = s.size();
6-
int insert = 0;
7-
for(int i = 0; i < n; i++)
8-
{
9-
if(s[i] == '(')
10-
{
11-
if(st.empty())
12-
{
13-
st.push(2);
6+
stack<char> v;
7+
int ans = 0;
8+
for(int i = 0;i < s.size();i++){
9+
if(s[i] == '(') v.push(s[i]);
10+
else{
11+
if(s[i] == ')' && i < s.size() && s[i + 1] == ')') {
12+
if(!v.empty())
13+
v.pop();
14+
else ans++;
15+
i++; // because we considered i+1 in this case
1416
}
15-
else
16-
{
17-
if(st.top() != 2)
18-
{
19-
st.pop();
20-
insert++;
17+
else if(s[i] == ')' && i < s.size() && s[i + 1] != ')'){
18+
if(!v.empty()){
19+
v.pop();
20+
ans++;
2121
}
22-
st.push(2);
22+
else ans += 2;
2323
}
2424
}
25-
else
26-
{
27-
if(st.empty())
28-
{
29-
insert++;
30-
st.push(1);
31-
}
32-
else
33-
{
34-
int dummy = st.top();
35-
st.pop();
36-
dummy--;
37-
if(dummy)
38-
st.push(dummy);
39-
}
40-
}
41-
}
42-
while(!st.empty())
43-
{
44-
insert += st.top();
45-
st.pop();
4625
}
47-
return insert;
26+
if(v.empty()) return ans;
27+
return v.size()*2 + ans;
4828
}
4929
};

0 commit comments

Comments
 (0)