比较考验基本功
class Solution {
public:
string solveEquation(string equation) {
int k = equation.find("=");
auto [a1, a0] = work(equation.substr(0, k));
auto [b1, b0] = work(equation.substr(k + 1));
//cout << a1 << " " << a0 << endl;
//cout << b1 << " " << b0 << endl;
if (a1 == b1 && a0 == b0) {
return "Infinite solutions";
} else if (a1 == b1 && a0 != b0) {
return "No solution";
}
return "x=" + to_string((b0 - a0) / (a1 - b1));
}
pair<int, int> work(string expression) {
int i = 0, n = expression.size();
int a1 = 0, a0 = 0;
int sign = 1;
while (i < n) {
if (i < n && expression[i] == '+') {
sign = 1;
i++;
}
if (i < n && expression[i] == '-') {
sign = -1;
i++;
}
if (i < n && expression[i] == 'x') {
a1 += sign * 1;
i++;
}
int num = 0;
while (i < n && isdigit(expression[i])) {
num = num * 10 + (expression[i++] - '0');
}
if (i < n && expression[i] == 'x') {
a1 += sign * num;
i++;
} else{
a0 += sign * num;
}
}
return {a1, a0};
}
};