Leetcode 640.求解方程
2024-09-28 17:35:49
求解方程
求解一个给定的方程,将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"
public class Solution {
public String coeff(String x) {
if (x.length() > 1 && x.charAt(x.length() - 2) >= '0' && x.charAt(x.length() - 2) <= '9')
return x.replace("x", "");
return x.replace("x", "1");
}
public String solveEquation(String equation) {
String[] lr = equation.split("=");
int lhs = 0, rhs = 0;
for (String x: breakIt(lr[0])) {
if (x.indexOf("x") >= 0) {
lhs += Integer.parseInt(coeff(x));
} else
rhs -= Integer.parseInt(x);
}
for (String x: breakIt(lr[1])) {
if (x.indexOf("x") >= 0)
lhs -= Integer.parseInt(coeff(x));
else
rhs += Integer.parseInt(x);
}
if (lhs == 0) {
if (rhs == 0)
return "Infinite solutions";
else
return "No solution";
}
return "x=" + rhs / lhs;
}
public List < String > breakIt(String s) {
List < String > res = new ArrayList < > ();
String r = "";
for (int i = 0; i < s.length(); i++) {
if (s.charAt(i) == '+' || s.charAt(i) == '-') {
if (r.length() > 0)
res.add(r);
r = "" + s.charAt(i);
} else
r += s.charAt(i);
}
res.add(r);
return res;
}
}
最新文章
- IIS的配置
- WPF学习之路(二) XAML
- 【USACO 2.2】Subset Sums (DP)
- 用Razor語法寫範本-RazorEngine組件介紹【转——非常好,可以用它来代替NVelocity】
- [mysql]brew 安装 配置 操作 mysql(中文问题)
- 选择最适合你的Linux学习方法
- 暂且解决INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误
- 安装CMS遇到php5.3的问题
- IOS内存管理「4」- ARC 和垃圾回收机制的基本概念
- PHP include()和require()方法的区别
- 37. Sudoku Solver
- spring-mvc整合freemarker并在ftl模版中显示服务端校验的错误信息,JSR303或者JSR349
- 国外支付PayPal
- Dotnet全平台下APM-Trace探索
- Codeforces Round #530 (Div. 2)
- IDEA中不同项目配置不同JDK
- [ SHELL编程 ] 远程服务器传输文件
- java入门--4110:圣诞老人的礼物-Santa Clau’s Gifts
- MVC + ajaxform 文件上传
- Zabbix实战-简易教程--日志类