640. 求解方程 : 简单模拟题

网友投稿 243 2022-08-23

640. 求解方程 : 简单模拟题

题目描述

这是 LeetCode 上的 ​​640. 求解方程​​ ,难度为 中等。

Tag : 「模拟」、「数学」、「双指针」

求解一个给定的方程,将 ​​x​​​ 以字符串 ​​"x=#value"​​​ 的形式返回。该方程仅包含 ​​'+'​​​ , ​​'-'​​​ 操作,变量 ​​x​​ 和其对应系数。

如果方程没有解,请返回 ​​"No solution"​​​。如果方程有无限解,则返回 ​​"Infinite solutions"​​。

题目保证,如果方程中只有一个解,则 'x' 的值是一个整数。

示例 1:

输入: equation = "x+5-3+x=6+x-2"输出: "x=2"

示例 2:

输入: equation = "x=x"

示例 3:

输入: equation = "2x=x"输出: "x=0"

提示:

模拟

为了方便,我们令 ​​equation​​​ 为 ​​s​​。

由于运算符只有 ​​+​​​ 和 ​​-​​,因此无须考虑运算优先级,可在遍历过程中进行计算。

Java 代码:

class Solution { public String solveEquation(String s) { int x = 0, num = 0, n = s.length(); char[] cs = s.toCharArray(); for (int i = 0, op = 1; i < n; ) { if (cs[i] == '+') { op = 1; i++; } else if (cs[i] == '-') { op = -1; i++; } else if (cs[i] == '=') { x *= -1; num *= -1; op = 1; i++; } else { int j = i; while (j < n && cs[j] != '+' && cs[j] != '-' && cs[j] != '=') j++; if (cs[j - 1] == 'x') x += (i < j - 1 ? Integer.parseInt(s.substring(i, j - 1)) : 1) * op; else num += Integer.parseInt(s.substring(i, j)) * op; i = j; } } if (x == 0) return num == 0 ? "Infinite solutions" : "No solution"; else return "x="

TypeScript 代码:

function solveEquation(s: string): string { let x = 0, num = 0, n = s.length for (let i = 0, op = 1; i < n; ) { if (s[i] == '+') { op = 1; i++; } else if (s[i] == '-') { op = -1; i++ } else if (s[i] == '=') { x *= -1; num *= -1; op = 1; i++; } else { let j = i while (j < n && s[j] != '+' && s[j] != '-' && s[j] != '=') j++ if (s[j - 1] == 'x') x += (i < j - 1 ? Number(s.substring(i, j - 1)) : 1) * op else num += Number(s.substring(i, j)) * op i = j } } if (x == 0) return num == 0 ? "Infinite solutions" : "No solution" else return "x="

最后

这是我们「刷穿 LeetCode」系列文章的第 ​​No.640​​ 篇,系列开始于 2021/01/01,截止于起始日 LeetCode 上共有 1916 道题目,部分是有锁题,我们将先把所有不带锁的题目刷完。

在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

为了方便各位同学能够电脑上进行调试和提交代码,我建立了相关的仓库:​​github.com/SharingSour…​​ 。

在仓库地址里,你可以看到系列文章的题解链接、系列文章的相应代码、LeetCode 原题链接和其他优选题解。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:如此低获客成本的营销方式,你居然不重视?(获客成本越高越好)
下一篇:强生吗丁啉携手《家味》IP,揭开春节营销的秘诀!
相关文章

 发表评论

暂时没有评论,来抢沙发吧~