class Solution {
public:
string solveEquation(string equation) {
int x=0,num=0,t=1;
int i=-1,j=0;
equation.push_back('+');
while(j<equation.size()){
// cout<<"j"<<j<<endl;
if(equation[j]=='+'||equation[j]=='-'||equation[j]=='='){
if(j>=1&&equation[j-1]=='x'){
if(j-i-2==0){
if(i>=0&& equation[i]=='-') x-=t;
else x+=t;
}
else{
if(i>=0&& equation[i]=='-') x-=t*atoi(equation.substr(i+1,j-i-2).c_str());
else x+=t*atoi(equation.substr(i+1,j-i-2).c_str());
}
}else{
if(i>=0&&equation[i]=='-') num-=t*atoi(equation.substr(i+1,j-i-1).c_str());
else num+=t*atoi(equation.substr(i+1,j-i-1).c_str());
}
if(equation[j]=='=') t=-1;
i=j;
}
++j;
//cout<<x<<" "<<num<<endl;
}
if(x==0){
if(num==0) return "Infinite solutions";
else return "No solution";
}
return "x="+to_string(-num/x);
}
};
leetcode640求解方程C++代码
最新推荐文章于 2024-01-05 09:47:18 发布