问题描述:
求解一个给定的方程,将x以字符串"x=#value"的形式返回。该方程仅包含'+',' - '操作,变量 x 和其对应系数。
如果方程没有解,请返回“No solution”。
如果方程有无限解,则返回“Infinite solutions”。
如果方程中只有一个解,要保证返回值 x 是一个整数。
示例 1:
输入: "x+5-3+x=6+x-2"
输出: "x=2"
示例 2:
输入: "x=x"
输出: "Infinite solutions"
示例 3:
输入: "2x=x"
输出: "x=0"
示例 4:
输入: "2x+3x-6x=x+2"
输出: "x=-1"
示例 5:
输入: "x=x+2"
输出: "No solution"
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/solve-the-equation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解决方案:
将字符串左右分别进行:变量x的系数计算及常数计算即可
class Solution {
public String solveEquation(String equation) {
String []ss= equation.split("=");
int []left = getex(ss[0]);
int []right = getex(ss[1]);
int x =left[0]-right[0];
int value= right[1]-left[1];
if(x==0&&value==0){
return "Infinite solutions";
}else if(x==0){
return "No solution";
}else {
return "x="+value/x;
}
}
public int[] getex(String s){
int[] ex = new int[2];
String []split = s.split("(?=[+-])");
for(String str:split){
if(str.equals("x")||str.equals("+x")){
ex[0]+=1;
}else if (str.equals("-x")){
ex[0]-=1;
}else if (str.contains("x")){
ex[0]+=Integer.parseInt(str.substring(0,str.length()-1));
}else {
ex[1]+=Integer.parseInt(str);
}
}
return ex;
}
}