2024年10月3日 星期四

[1249] Minimum Remove to Make Valid Parentheses

嗯...先寫了初版後~本來想要寫精進版本的~
沒想到 ...(?)
就先這樣吧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;
}

沒有留言:

張貼留言