力扣640(java)-求解方程(中等)
题目:
求解一个给定的方程,将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)-求解方程(中等)的更多相关文章
- Java实现 LeetCode 640 求解方程(计算器的加减法计算)
640. 求解方程 求解一个给定的方程,将x以字符串"x=#value"的形式返回.该方程仅包含'+',' - '操作,变量 x 和其对应系数. 如果方程没有解,请返回" ...
- Leetcode 640.求解方程
求解方程 求解一个给定的方程,将x以字符串"x=#value"的形式返回.该方程仅包含'+',' - '操作,变量 x 和其对应系数. 如果方程没有解,请返回"No so ...
- 力扣1689. 十-二进制数的最少数目-C语言实现-中等难度题
题目 传送门 如果一个十进制数字不含任何前导零,且每一位上的数字不是 0 就是 1 ,那么该数字就是一个 十-二进制数 .例如,101 和 1100 都是 十-二进制数,而 112 和 3001 不是 ...
- 力扣1438. 绝对差不超过限制的最长连续子数组-C语言实现-中等难度
题目 传送门 文本 给你一个整数数组 nums ,和一个表示限制的整数 limit,请你返回最长连续子数组的长度,该子数组中的任意两个元素之间的绝对差必须小于或者等于 limit . 如果不存在满足条 ...
- 力扣1052. 爱生气的书店老板-C语言实现-中等难度
题目 传送门 文本 今天,书店老板有一家店打算试营业 customers.length 分钟.每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开. 在某些时 ...
- 力扣算法经典第一题——两数之和(Java两种方式实现)
一.题目 难度:简单 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数, 并返回它们的数组下标. 你可以假设每种输入只会对应一 ...
- 力扣算法题—069x的平方根
实现 int sqrt(int x) 函数. 计算并返回 x 的平方根,其中 x 是非负整数. 由于返回类型是整数,结果只保留整数的部分,小数部分将被舍去. 示例 1: 输入: 4 输出: 2 示例 ...
- 【力扣leetcode】-787. K站中转内最便宜的航班
题目描述: 有 n 个城市通过一些航班连接.给你一个数组 flights ,其中 flights[i] = [fromi, toi, pricei] ,表示该航班都从城市 fromi 开始,以价格 p ...
- 力扣(leetcode)题库0001-python3
试一下leetcode的题库,不知道对于我这种小白要多长时,但是目标已经种下,去做就是了.You can do anything you set your mind to. 题目:题库链接 中:给定一 ...
- C++ 二分法求解方程的解
二分法是一种求解方程近似根的方法.对于一个函数 f(x)f(x),使用二分法求 f(x)f(x) 近似解的时候,我们先设定一个迭代区间(在这个题目上,我们之后给出了的两个初值决定的区间 [-20,20 ...
随机推荐
- socket本地通信服务端
#include <stdio.h> #include <sys/socket.h> #include <arpa/inet.h> #include <str ...
- Global AI Bootcamp 成都站 圆满结束!
3月10日星期天下午2点「Global AI Bootcamp 2024 - 成都站」,在成都银泰中心蔚来汽车会议区圆满结束了! 本次活动共计吸引了约50名IT行业从业者线下参与,他们分别来自成都各行 ...
- 说JS作用域,就不得不说说自执行函数
一个兜兜转转,从"北深"回到三线城市的小码农,热爱生活,热爱技术,在这里和大家分享一个技术人员的点点滴滴.欢迎大家关注我的微信公众号:果冻想 前言 不得不吐槽,学个JS,这个概念也 ...
- axios中设置了response:blol后,如何处理json对象
axios中文件下载 上传文件后台校验,若失败则下载文件 let loading = this.$common.loading("正在上传"); let form = new Fo ...
- CPU上下文切换 CPU的调度策略
CPU上下文切换 就是先把前一个任务的CPU上下文(也就是CPU寄存器和程序计数器)保存起来,然后加载新任务的上下文,到这些寄存器和程序计数器,最后再跳转到程序计数器所指的新位置,运行新任务. 根据任 ...
- KingbaseES中不同user之间的权限关系
1.概念 1.schema是每个database中特有的. schema概念有点像命名空间,这个逻辑空间包含若干表对象. 在DB里面,有了schema才可以创建对象,对象需要依赖于schema,默认为 ...
- KingbaseES V8R6备份恢复系列之 -- system-Id不匹配备份故障
KingbaseES V8R6备份恢复案例之---system-Id不匹配备份故障 案例说明: 在KingbaseES V8R6执行备份时,在sys_log日志中出现system-id不一致的故障 ...
- mybatis添加maven依赖
1 <dependencies> 2 <!--导入Mybatis依赖包--> 3 <dependency> 4 <groupId>org.mybatis ...
- 【已解决】linux centos7系统磁盘扩容
第一步要手动加硬盘(我的操作是在20G的基础上加了30G) [reliable@hadoop102 ~]$ su root密码: 查看当前磁盘挂载情况: [root@hadoop102 reliabl ...
- 基于IDEA javaweb项目目录结构
https://www.pianshen.com/article/62631355687/