C++ 回答错误,Can';I don’我不知道我的代码出了什么问题
我已经用基本的字符串方法做了这个问题,我正在用堆栈尝试这个问题,但是得到了错误的答案,即使我所有的测试用例都工作正常。 问题链接: 我真的很想努力学习DSA,请帮助我,并对我的编码风格提出一些建议(我认为我写代码的方式非常糟糕) 这是我的密码: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>&
#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语句用于字符串以“>”开头的时间,因此它应该直接从循环中退出。