求解方程

求解一个给定的方程,将 x 以字符串 “x=#value” 的形式返回。该方程仅包含 ‘+’ , ‘-‘ 操作,变量 x 和其对应系数。
如果方程没有解或存在的解不为整数,请返回 “No solution” 。如果方程有无限解,则返回 “Infinite solutions” 。
题目保证,如果方程中只有一个解,则 ‘x’ 的值是一个整数。

  • 输入: equation = “x+5-3+x=6+x-2”
    输出: “x=2”

  • 输入: equation = “x=x”
    输出: “Infinite solutions”

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
var solveEquation = function(equation) {
let a = 0, b = 0, c = 0, sign = 1, left = 1, hasC = false;
for (let z of equation) {
switch (z) {
case 'x':
a += hasC ? sign * left * c : sign * left, c = 0, hasC = false;
break;
case '+':
b += sign * left * c, c = 0, sign = 1, hasC = false;
break;
case '-':
b += sign * left * c, c = 0, sign = -1, hasC = false;
break;
case '=':
b += sign * left * c, c = 0, sign = 1, left = -1, hasC = false;
break;
default:
c = c * 10 + (z - '0'), hasC = true;
break;
}
}
b += sign * left * c;
return a === 0 ? b === 0 ? "Infinite solutions" : "No solution" : "x=" + -b / a;
};