这两段代码有什么区别,为什么第一段可以 AC,但是第二段会 WA。
这是第一段代码
long long calculator(int now_line){
while(number.size()) number.pop();
for(int i=2;i<code[now_line].length();i++){
if(isdigit(code[now_line][i])){
int x=0;
for(;isdigit(code[now_line][i]);i++){
x=x*10+code[now_line][i]-'0';
}
i--;
number.push(x);
}else if(code[now_line][i]>='a'&&code[now_line][i]<='z'){
number.push(var[code[now_line][i]-'a']);
}else{
if(!symbol.size()) symbol.push(code[now_line][i]);
else if(code[now_line][i]=='(') symbol.push(code[now_line][i]);
else if(code[now_line][i]==')'){
while(symbol.top()!='(') cal();
symbol.pop();
}else if(code[now_line][i]=='*'||code[now_line][i]=='/'){
while(symbol.size()&&symbol.top()!='+'&&symbol.top()!='-'&&symbol.top()!='(') cal();
symbol.push(code[now_line][i]);
}else if(code[now_line][i]=='+'||code[now_line][i]=='-'){
while(symbol.size()&&symbol.top()!='(') cal();
symbol.push(code[now_line][i]);
}
}
}
while(symbol.size()) cal();
return number.top();
}
第二段代码有一段初始化
piror存的是对应符号的优先级
这是初始化
map<char,int> piror;
piror['*']=piror['/']=1;
piror['+']=piror['-']=1;
piror['(']=0;piror[')']=3;
这是和第一段相同功能的函数
long long calculator(int now_line){
while(number.size()) number.pop();
for(int i=2;i<code[now_line].length();i++){
if(isdigit(code[now_line][i])){
int x=0;
for(;isdigit(code[now_line][i]);i++){
x=x*10+code[now_line][i]-'0';
}
i--;
number.push(x);
}else if(code[now_line][i]>='a'&&code[now_line][i]<='z'){
number.push(var[code[now_line][i]-'a']);
}else{
if(!symbol.size()) symbol.push(code[now_line][i]);
else if(code[now_line][i]=='(') symbol.push(code[now_line][i]);
else if(code[now_line][i]==')'){
while(symbol.top()!='(') cal();
symbol.pop();
}else if(code[now_line][i]=='*'||code[now_line][i]=='/'){
while(symbol.size()&&piror[symbol.top()]>=piror[code[now_line][i]]) cal();
symbol.push(code[now_line][i]);
}else if(code[now_line][i]=='+'||code[now_line][i]=='-'){
while(symbol.size()&&piror[symbol.top()]>=piror[code[now_line][i]]) cal();
symbol.push(code[now_line][i]);
}
}
}
while(symbol.size()) cal();
return number.top();
}
由于我太弱了,所以没有发现什么错误,求大佬指教