本文最后更新于301 天前,其中的信息可能已经过时,如有错误请发送邮件到2446865563@qq.com
1.题目基本信息
1.1.题目描述
求解一个给定的方程,将x以字符串 "x=#value" 的形式返回。该方程仅包含 '+' , '-' 操作,变量 x 和其对应系数。
如果方程没有解或存在的解不为整数,请返回 "No solution" 。如果方程有无限解,则返回 “Infinite solutions” 。
题目保证,如果方程中只有一个解,则 'x' 的值是一个整数。
1.2.题目地址
https://leetcode.cn/problems/solve-the-equation/description/
2.解题方法
2.1.解题思路
模拟
2.2.解题步骤
第一步,构建维护变量。factor维护x的系数;val维护ax=b中的b值;sign维护当前元素的前置符号,左侧的为1,右侧的为-1
第二步,遍历equation。根据字符的类型更新维护变量
-
2.1.字符为'='的情况处理
-
2.2.处理当前组合项。一项由'+'、'-'、数字、'x'组成
-
2.2.1.'+'/'-'符号处理
-
2.2.2.数字符号处理
-
2.2.3.符号'x'处理
-
3.解题代码
python代码
class Solution:
def solveEquation(self, equation: str) -> str:
# 思路:模拟
# 第一步,构建维护变量。factor维护x的系数;val维护ax=b中的b值;sign维护当前元素的前置符号,左侧的为1,右侧的为-1
factor = val = 0
sign = 1
# 第二步,遍历equation。根据字符的类型更新维护变量
n = len(equation)
i = 0
while i < n:
# 2.1.字符为'='的情况处理
if equation[i] == "=":
sign = -1
i += 1
continue
# 2.2.处理当前组合项。一项由'+'、'-'、数字、'x'组成
# 2.2.1.'+'/'-'符号处理
sign1 = sign
if equation[i] == "-":
sign1 = -sign1
i += 1
elif equation[i] == "+":
i += 1
# 2.2.2.数字符号处理
if equation[i] == "x":
num1 = 1
elif equation[i].isdigit():
# 数值
j = i
num1 = 0
while j < n and equation[j].isdigit():
num1 = num1 * 10 + int(equation[j])
j += 1
i = j
# 2.2.3.符号'x'处理
if i < n and equation[i] == "x":
factor += num1 * sign1
i += 1
else:
val += -num1 * sign1
if factor == 0 and val == 0:
return "Infinite solutions"
elif factor == 0:
return "No solution"
else:
return f"x={val // factor}"
4.执行结果










