1
class Solution {
2
public int[] simplifyEqn(String eqn) {
3
int prevSign = 1;
4
int sumX = 0;
5
int sumNums = 0;
6
for (int i = 0; i < eqn.length(); ) {
7
int coEff = 0;
8
int j = i;
9
while (j < eqn.length() && Character.isDigit(eqn.charAt(j))) {
10
coEff = coEff * 10 + (eqn.charAt(j) - '0');
11
j++;
12
}
13
if (j < eqn.length() && eqn.charAt(j) == 'x') {
14
if (i == j) coEff = 1;
15
sumX += prevSign * coEff;
16
j++;
17
} else {
18
sumNums += prevSign * coEff;
19
}
20
if (j < eqn.length() && eqn.charAt(j) == '+') prevSign = 1;
21
else if (j < eqn.length() && eqn.charAt(j) == '-') prevSign = -1;
22
i = ++j;
23
}
24
return new int[] {sumX, sumNums};
25
}
26

27
public String solveEquation(String equation) {
28
String[] leftNRight = equation.split("=");
29
String left = leftNRight[0], right = leftNRight[1];
30
int[] leftEqn = simplifyEqn(left);
31
int[] rightEqn = simplifyEqn(right);
32
int x = leftEqn[0] - rightEqn[0];
33
int num = rightEqn[1] - leftEqn[1];
34
if (x == 0)
35
if (num == 0) return "Infinite solutions";
36
else return "No solution";
37
return "x=" + num / x;
38
}
39
}

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0