沒想到 ...(?)
就先這樣吧QQ
char* minRemoveToMakeValid(char* s) {
int len = strlen(s);
int l=0, r=0, t_l=0;
char *ret = calloc (len+1, sizeof(char));
int idx = 0;
for (int i=0; i<len; i++)
{
switch (s[i])
{
case ('('):
{
l++;
t_l++;
ret[idx++] = s[i];
}
break;
case (')'):
if (l>0)
{
l--;
ret[idx++] = s[i];
}
break;
default :
ret[idx++] = s[i];
}
}
if (l<=0)
return ret;
for (int i=0; i<idx; i++)
s[i]= ret[i];
int n_idx = idx-1;
for (int i=idx-1; i>=0; i--)
{
switch (s[i])
{
case ('('):
if (r>0)
{
r--;
ret[n_idx--] = s[i];
}
break;
case (')'):
{
r++;
ret[n_idx--] = s[i];
}
break;
default :
ret[n_idx--] = s[i];
}
}
for (int i=n_idx+1; i<idx; i++)
{
ret[i-(n_idx+1)]= ret[i];
}
ret[idx-(n_idx+1)] = '\0';
return ret;
}
沒有留言:
張貼留言