76分,其他测试点都是RE,不太理解错误在哪儿qaq
查看原帖
76分,其他测试点都是RE,不太理解错误在哪儿qaq
113001
xuhrrr楼主2024/1/18 14:26

我的主要思路是栈来模拟括号的匹配但是问题是不知道为什么re了

最后几步的思路是看我栈中的括号‘(’的数目和‘)’的数目,由于如果栈中只有‘)’一定不会有‘(’所以全部是‘)’只要/2即可。而‘(’和')’是完全分离开来的,所以数'(',详见代码~~(当时研究了一会,好像想法是对的)~~,看看有没有大佬帮忙debug

代码如下:

#include <iostream>
#include <stack>
#include <cstring>
#include <string>
using namespace std;

int main()
{
    stack <char> s;
    string a;
    int ans = 0;
    getline(cin,a);
    for(int i = 0 ; a[i] != '\0' ; ++i){
        if(!s.empty() && s.top() == '(' && a[i] == ')'){
            s.pop();
        }
        else{
            s.push(a[i]);
        }
    }
    if(s.top() == ')'){
        ans = s.size() / 2;
    }
    else{
        int temp = 0;
        while(s.top() == '('){
            temp++;
            s.pop();
        }
        ans = (temp % 2 == 0) ? (temp / 2 + s.size() / 2) : (temp / 2 + (s.size() + 1) / 2 + 1);
    }
    cout << ans << endl;
    return 0;
}
2024/1/18 14:26
加载中...