C++ 回答错误,Can';I don’我不知道我的代码出了什么问题

C++ 回答错误,Can';I don’我不知道我的代码出了什么问题,c++,class,stack,C++,Class,Stack,我已经用基本的字符串方法做了这个问题,我正在用堆栈尝试这个问题,但是得到了错误的答案,即使我所有的测试用例都工作正常。 问题链接: 我真的很想努力学习DSA,请帮助我,并对我的编码风格提出一些建议(我认为我写代码的方式非常糟糕) 这是我的密码: #include <bits/stdc++.h> using namespace std; int main() { int t; cin>>t; while(t--){ string str; cin>&

我已经用基本的字符串方法做了这个问题,我正在用堆栈尝试这个问题,但是得到了错误的答案,即使我所有的测试用例都工作正常。 问题链接: 我真的很想努力学习DSA,请帮助我,并对我的编码风格提出一些建议(我认为我写代码的方式非常糟糕)

这是我的密码:

#include <bits/stdc++.h>
using namespace std;

int main() {
int t;
cin>>t;
while(t--){
    string str;
    cin>>str;
    class Node{
        public:
         char value;
         int indexvalue;
    };
    std::stack<Node> f;
    
    int start=0;
    int end=0;
    int k=-1;
    for(int i=0;i<str.size();i++){
        char s = str[i];
        
        if(i == 0){
            if(s == '>'){
                break;
            }
        }
     if(s=='<'){
         Node n;
         n.value=s;
         n.indexvalue=i;
         f.push(n);
     }
     else{
         if(!f.empty()){
         Node tempnode=f.top();
         f.pop();
         int tempstart=tempnode.indexvalue;
         int tempend=i;
         int tempk=tempend-tempstart;
         if(tempk>k){
             k=tempk;
              start=tempstart;
             end=tempend;
         }
         }
        
         
     }
     
    }
    cout<<k+1<<endl;
    
 }
}
#包括
使用名称空间std;
int main(){
int t;
cin>>t;
而(t--){
字符串str;
cin>>str;
类节点{
公众:
字符值;
int指数值;
};
std::堆栈f;
int start=0;
int end=0;
int k=-1;
对于(int i=0;ik){
k=tempk;
开始=临时开始;
end=tempend;
}
}
}
}

我可能对什么是错的感到困惑。使用示例输入,我得到正确的输出。你用什么输入来得到错误的答案?否则,您的代码看起来应该可以工作,从我的测试来看,它可以工作。至于编码风格,这是一个主题。我个人的意见是:不要使用
使用命名空间std
,使用描述性变量名(
t
str
f
等没有上下文的意思),使用
struct
而不是
class
当使用公共成员变量时,不要声明未使用的变量(如
开始
结束
),添加说明代码为何要执行某项操作的注释,将代码拆分为较小的函数,不需要first break语句,使用
std::max
设置k,但这些都是主观的。当我提交代码时,codechef会弹出错误的答案。如果此问题需要某个索引值作为长链的起点这就是我为将来创建start和end变量的原因。first break语句用于字符串以“>”开头的时间,因此它应该直接从循环中退出。