携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第16天,点击查看活动详情
求解一个给定的方程,将x以字符串 "x=#value" 的形式返回。该方程仅包含 '+' , '-' 操作,变量 x 和其对应系数。
如果方程没有解,请返回 "No solution" 。如果方程有无限解,则返回 “Infinite solutions” 。
题目保证,如果方程中只有一个解,则 'x' 的值是一个整数。
示例 1:
输入: equation = "x+5-3+x=6+x-2"
输出: "x=2"
示例 2:
输入: equation = "x=x"
输出: "Infinite solutions"
示例 3:
输入: equation = "2x=x"
输出: "x=0"
提示:
3 <= equation.length <= 1000equation只有一个'='.equation方程由整数组成,其绝对值在[0, 100]范围内,不含前导零和变量'x'。
解题
/**
* @param {string} equation
* @return {string}
*/
var solveEquation = function (equation) {
equation += "+";
let factor = 0;
let value = 0;
let flag = 1;
let sign = 1;
for (let i = 0, j = 0; i < equation.length; i++) {
const char = equation[i];
if (!/\d/.test(char)) {
if (char === "x") {
factor += +(i > j ? equation.slice(j, i) : 1) * sign;
} else {
if (i > j) {
value += +equation.slice(j, i) * sign;
}
if(char==='='){
flag = -1
}
sign = (char === "-" ? -1 : 1) * flag;
}
j = i + 1;
}
}
if (factor === 0) {
return value === 0 ? "Infinite solutions" : "No solution";
} else {
return `x=${-value / factor}`;
}
};