题目:

求解一个给定的方程,将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 <= 1000
equation 只有一个 '='.
equation 方程由整数组成,其绝对值在 [0, 100] 范围内,不含前导零和变量 'x' 。

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/solve-the-equation
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

1.首先将方程式以 “=” 作为分割符进行左右分割,并将 ‘-’ 替换成 ‘+-’;

2.设置两个变量统计x的系数 xnum和常数 num;

3.再遍历分割出的左边的字符串,以 '+' 作为分割符,分割出含有x的字符串和常数字符串;

  • 如果遍历的字符串为"x",则xnum++;
  • 如果遍历的字符串为"-x",,则xnum--;
  • 如果遍历的字符串为含有其他的常数项的x,,则xnum+常数项(常数项可为正可为负);
  • 否则,就是遍历的常数项,想象需要将常数项移到等号右边,则常数num - 当前常数。

4.再遍历分割出的右边的字符串,以 '+' 作为分割符,分割出含有x的字符串和常数字符串,这与第三步类似;

  • 如果遍历的字符串为"x",则xnum--(想象需要将含x的项移到等号左边);
  • 如果遍历的字符串为"-x",,则xnum++(想象需要将含x的项移到等号左边);
  • 如果遍历的字符串为含有其他的常数项的x,,则xnum-常数项(常数项可为正可为负);
  • 否则,就是遍历的常数项,等号右边的常数项不需要移动,则常数num +当前常数。

5.返回结果

  • 如果xnum == num == 0,则有无穷解;
  • 如果就xnum==0,则无解;
  • 如果不满足以上两种情况,则x = num / xnum 。

代码:

 1 class Solution {
2 public String solveEquation(String equation) {
3 //将负号换成正负号,并以等号为分割符进行左右分割
4 String[] s1 = equation.replace("-","+-").split("=");
5 //设置两个变量统计x的系数和常数
6 int xnum = 0,num = 0;
7 //遍历等号左边的数
8 for (String s: s1[0].split("\\+")){
9 if (s.length() == 0) continue;
10 if (s.contains("x")){
11 if (s.equals("x"))
12 xnum++;
13 else if (s.equals("-x"))
14 xnum--;
15 else
16 //x前面有>1的系数
17 xnum += Integer.parseInt(s.replace("x",""));
18 }
19 else{
20 num -= Integer.parseInt(s);
21 }
22 }
23 //遍历等号右边的数
24 for (String s: s1[1].split("\\+")){
25 if (s.length() == 0) continue;
26 if (s.contains("x")){
27 if (s.equals("x"))
28 xnum--;
29 else if (s.equals("-x"))
30 xnum++;
31 else
32 //x前面有>1的系数
33 xnum -= Integer.parseInt(s.replace("x",""));
34 }
35 else{
36 num += Integer.parseInt(s);
37 }
38 }
39 if (xnum == 0 && num == 0)
40 return "Infinite solutions";
41 if (xnum == 0)
42 return "No solution";
43 return "x=" + (num/xnum);
44
45 }
46 }

力扣640(java)-求解方程(中等)的更多相关文章

  1. Java实现 LeetCode 640 求解方程(计算器的加减法计算)

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

  2. Leetcode 640.求解方程

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

  3. 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题

    题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...

  4. 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度

    题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...

  5. 力扣1052. 爱生气的书店老板-C语言实现-中等难度

    题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...

  6. 力扣算法经典第一题——两数之和(Java两种方式实现)

    一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...

  7. 力扣算法题—069x的平方根

    实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...

  8. 【力扣leetcode】-787. K站中转内最便宜的航班

    题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...

  9. 力扣(leetcode)题库0001-python3

    试一下leetcode的题库,不知道对于我这种小白要多长时,但是目标已经种下,去做就是了.You can do anything you set your mind to. 题目:题库链接 中:给定一 ...

  10. C++ 二分法求解方程的解

    二分法是一种求解方程近似根的方法.对于一个函数 f(x)f(x),使用二分法求 f(x)f(x) 近似解的时候,我们先设定一个迭代区间(在这个题目上,我们之后给出了的两个初值决定的区间 [-20,20 ...

随机推荐

  1. C++学习笔记之进阶编程

    目录 进阶编程 STL(Standard Template Library) 容器(container) 仿函数(functor) 算法(algorithm) transform 查找 全排列 迭代器 ...

  2. 玉蟾宫(悬线dp)

    求最大子矩阵一般用采用悬线法 (包好用的牢底) 悬线法: [ 以这道题为例,我们将R称为障碍格子,将F称为非障碍格子] 我们选择任意一个非障碍格子,引出三条直线:左直 右直 上直 随后从这个点出发,分 ...

  3. python librosa 实例解析

    一 概念 librosa是一个用于音乐和音频分析的python包.它提供了创建音乐信息检索系统所需的构建块. 核心函数:   二 实例解析   实例A,确认是否安装成功: import librosa ...

  4. K8S-1.23.17+Ceph+KubeSphere 一主二从部署攻略

    K8S部署攻略 此教程以一主二从为例,需要三台服务器. 主机最低需求: 4 核 CPU,4 GB 内存,硬盘:20 GBx2 (需保留一个未分区的磁盘) 从机最低需求: 4 核 CPU,8 GB 内存 ...

  5. 引领文旅新体验!3DCAT实时云渲染助力打造“永不落幕”的湾区文采会元宇宙

    2022年11月25日至27日,2022年粤港澳大湾区公共文化和旅游产品(东莞)采购会(简称"湾区文采会")在广东省东莞市文化馆举行. 文采会期间,文采会元宇宙线上虚拟展厅全新亮相 ...

  6. AXI4协议的物理模型

    AXI4的物理传输模型 1.AXI4的组成部分 首先说一下文章是学习<基于AXI4的IP核互联的设计与验证>莫锦辉的学习笔记.文中大部分的知识都是来源于这篇论文,这里学习以便理解AXI4协 ...

  7. KingbaseES 数据库逻辑优化规则

    SQL 优化的过程可以分为逻辑优化和物理优化两个部分.逻辑优化主要是基于规则的优化,简称 RBO(Rule-Based Optimization).物理优化会为逻辑查询计划中的算子选择某个具体的实现, ...

  8. linux关闭主板警告声,蜂鸣声,滴滴声,pc扬声器。

    启动时,BIOS 通常会在开机自检期间发出蜂鸣声.较新的主板型号省略了开机自检蜂鸣声,以便快速启动进入操作系统.BIOS 通常允许切换开机自检蜂鸣声,但无法将 PC 扬声器配置为完全关闭.一旦系统启动 ...

  9. 2 CSS基本选择器

    2 基本选择器 id选择器 id选择器使用"#"进行标识,后面紧跟id名,其基本语法格式为: #id名{属性1:属性值1;属性2:属性值2;属性3:属性值3;} 该语法中,id名即 ...

  10. #容斥,排列组合#U138404 选数字

    题目 给定长度为\(n,n\leq 10^5\)的序列\(a,a_i,m\leq 255\),多组询问求 \[\sum_{i=l}^{r-2}\sum_{j=i+1}^{r-1}\sum_{k=j+1 ...