求解方程

求解一个给定的方程,将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;
}
}

最新文章

  1. IIS的配置
  2. WPF学习之路(二) XAML
  3. 【USACO 2.2】Subset Sums (DP)
  4. 用Razor語法寫範本-RazorEngine組件介紹【转——非常好,可以用它来代替NVelocity】
  5. [mysql]brew 安装 配置 操作 mysql(中文问题)
  6. 选择最适合你的Linux学习方法
  7. 暂且解决INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误
  8. 安装CMS遇到php5.3的问题
  9. IOS内存管理「4」- ARC 和垃圾回收机制的基本概念
  10. PHP include()和require()方法的区别
  11. 37. Sudoku Solver
  12. spring-mvc整合freemarker并在ftl模版中显示服务端校验的错误信息,JSR303或者JSR349
  13. 国外支付PayPal
  14. Dotnet全平台下APM-Trace探索
  15. Codeforces Round #530 (Div. 2)
  16. IDEA中不同项目配置不同JDK
  17. [ SHELL编程 ] 远程服务器传输文件
  18. java入门--4110:圣诞老人的礼物-Santa Clau’s Gifts
  19. MVC + ajaxform 文件上传
  20. Zabbix实战-简易教程--日志类

热门文章

  1. 基于jeesit下的工作流开发步骤
  2. Yii2 Working with Relational Data at ActiveDataProvider
  3. LeetCode Add Two Numbers 两个数相加
  4. COGS 2769. mk去撸串
  5. html5标准
  6. php之cURL惯用
  7. window.onload中调用函数报错的问题
  8. 日常入新坑,py一下
  9. java基础面试题:switch语句能否作用在byte上,能否作用在long上,能否作用在String上?
  10. SummerVocation_Learning--java的基本概念