难度不大,主要部分是 实现常数部分与x系数的分解。
分解后分类讨论返回结果即可
class Solution {
int parseInt(String s) {
if(s.endsWith("x")){
if(s.length()==1)return 1;
return Integer.parseInt(s.substring(0, s.length() - 1));
}
return Integer.parseInt(s);
}
int[] parseEquation(String eq){
int[] res = new int[4];
String[] t = eq.split("=");
for(int k=0;k<2;k++){
int x=0,n=0;
String a = t[k];
int i = 0;
while(i<a.length()){
char sign = '+';
if(a.charAt(i)=='+'||a.charAt(i)=='-')sign = a.charAt(i++);
StringBuilder atoken = new StringBuilder();
while(i<a.length() && ( a.charAt(i)=='x' || Character.isDigit(a.charAt(i)))){
atoken.append(a.charAt(i++));
}
String token = atoken.toString();
if(token.endsWith("x")){
int p= parseInt(token);
x = sign=='+'?x+p:x-p;
}
else{
int p = parseInt(token);
n = sign=='+'?n+p:n-p;
}
}
res[k*2] = x;
res[k*2+1] = n;
}
return res;
}
public String solveEquation(String equation) {
int x1,n1,x2,n2;
int[] res = parseEquation(equation);
x1 = res[0];
n1 = res[1];
x2 = res[2];
n2 = res[3];
if(x1==x2 && n1==n2)return "Infinite solutions";
x1 -= x2;
x2 = 0;
if(x1==0)return "No solutions";
n2 -= n1;
n1 = 0;
return "x="+Integer.toString(n2/x1);
}
}