信阳企业网站开发,wordpress注册页面主题,宣传文案模板,长春哪家网站做的好说在前面 #x1f388;不知道大家对于算法的学习是一个怎样的心态呢#xff1f;为了面试还是因为兴趣#xff1f;不管是出于什么原因#xff0c;算法学习需要持续保持。 题目描述
求解一个给定的方程#xff0c;将x以字符串 “x#value” 的形式返回。该方程仅包含 ‘’ 不知道大家对于算法的学习是一个怎样的心态呢为了面试还是因为兴趣不管是出于什么原因算法学习需要持续保持。 题目描述
求解一个给定的方程将x以字符串 “x#value” 的形式返回。该方程仅包含 ‘’ ‘-’ 操作变量 x 和其对应系数。
如果方程没有解请返回 “No solution” 。如果方程有无限解则返回 “Infinite solutions” 。
题目保证如果方程中只有一个解则 ‘x’ 的值是一个整数。
示例 1
输入: equation x5-3x6x-2
输出: x2示例 2:
输入: equation xx
输出: Infinite solutions示例 3:
输入: equation 2xx
输出: x0提示:
3 equation.length 1000
equation 只有一个 .
equation 方程由整数组成其绝对值在 [0, 100] 范围内不含前导零和变量 x思路分析
题目的意思很清楚就是会给我们一个一元一次方程我们需要求解方程计算出其中变量x的取值。这是小学的题目我相信基本每一位同学都可以快速的笔算或者说口算出来但是要怎么让电脑去帮我们进行计算呢那我们首先就要想一下自己是怎么进行计算的然后将我们的方法告诉电脑就可以让电脑来帮我们进行计算了。
首先让我们先来回顾一下一元二次方程的解题过程
1、合并同类项分别对变量和常量进行合并求值2、移项化简求值
解题过程其实很简单但我们要怎么将其写成代码呢主要可以分成下面这几步
1、找出等式中的数值项及运算符
let q equation.split();
let symbol [[],[]];
for(let j 0; j 2; j){for(let i 0; i q[j].length; i){if(q[j][i] || q[j][i] -){symbol[j].push(q[j][i]);}}q[j] q[j].split(/\|\-/g);if(q[j].length symbol[j].length) symbol[j].unshift();
}2、合并同类项
let x,n 0;
for(let i 0; i q.length; i){for(let j 0; j q[i].length; j){if(q[i][j].includes(x)){x cal(x || 0,parseInt(q[i][j]) || (q[i][j][0] 0 ? 0 : 1),symbol[i][j],i 0);}else{n cal(n,q[i][j],symbol[i][j],i 1);}}
}3、变量系数化简
if(x 0 n 0) return Infinite solutions;
if(!x) return No solution;
return x n / x;AC代码
/*** param {string} equation* return {string}*/var solveEquation function(equation) {let q equation.split();let symbol [[],[]];for(let j 0; j 2; j){for(let i 0; i q[j].length; i){if(q[j][i] || q[j][i] -){symbol[j].push(q[j][i]);}}q[j] q[j].split(/\|\-/g);if(q[j].length symbol[j].length) symbol[j].unshift(); }const cal (a,b,symbol,flag) {a parseInt(a) || 0;b parseInt(b) || 0;switch(symbol){case :return flag ? a b : a - b;case -:return flag ? a - b : a b;}};let x,n 0;for(let i 0; i q.length; i){for(let j 0; j q[i].length; j){if(q[i][j].includes(x)){x cal(x || 0,parseInt(q[i][j]) || (q[i][j][0] 0 ? 0 : 1),symbol[i][j],i 0);}else{n cal(n,q[i][j],symbol[i][j],i 1);}}}if(x 0 n 0) return Infinite solutions;if(!x) return No solution;return x n / x;
};公众号
关注公众号『前端也能这么有趣』获取更多有趣内容。
说在后面 这里是 JYeontu现在是一名前端工程师有空会刷刷算法题平时喜欢打羽毛球 平时也喜欢写些东西既为自己记录 也希望可以对大家有那么一丢丢的帮助写的不好望多多谅解 写错的地方望指出定会认真改进 偶尔也会在自己的公众号『前端也能这么有趣』发一些比较有趣的文章有兴趣的也可以关注下。在此谢谢大家的支持我们下文再见 。