Code hàm đảo ngược các ký tự trong ngoặc đơn trong chuỗi bị sai

Bài toán (Codefight): Viết hàm đảo ngược các ký tự trong ngoặc đơn (có thể lồng nhau) trong chuỗi đầu vào.

Mọi người giúp em với ạ,không biết sai ở trường hợp nào!

std::string reverseInParentheses(std::string S) {

int l;int dem;int mo;int dong;int d=-1;

bool kt=true;

while(kt==true)

{d=0;

for(int i=S.length()-1;i>=0;i--)

if(S[i]=='(')

{   d=1;mo=i;

    for(int j=i+1;j<S.length();j++)

    if(S[j]==')')

    {

        dong=j;

        break;

    }

    S.erase(S.begin()+dong);

    S.erase(S.begin()+mo);

    dong-=2;

    break;

    }

    if(d==1)

    {           

 dem=-1;

 l=dong-mo;

        for(int j=mo;j<=mo+l/2;j++)

    {dem+=1;

        char t=S[j];

        S[j]=S[dong-dem];

        S[dong-dem]=t;

    }

}

if(d==0) break;

}
}

Ý tưởng thế này:

Tạo 1 biến check. Nếu check = true thì tức là phải đảo ngược ký tự, nếu check = false thì không.
Duyệt từng ký tự của chuỗi, nếu s[i] == '(' || s[i] == ')' thì đảo ngược biến check, còn lại thì cứ theo biến check mà đổi :))

4 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?