题目
求解一个给定的方程,将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"
题解
这是经典的四则运算题,可以参考前两道题:224. 基本计算器 和 227. 基本计算器 II
无他,唯手熟尔。
class Solution:def solveEquation(self, equation: str) -> str:S = '0+'+equation+'+0'res = 0num = 0sgn = 1g_sgn = 1s_x = 0for i in range(len(S)):c = S[i]if c.isdigit():num = num*10+int(c)elif c == '+' or c == '-':res += num*sgnnum = 0sgn = g_sgn if c == '+' else -1*g_sgnelif c == '=':res += num*sgnnum = 0sgn = g_sgn if c == '+' else -1*g_sgng_sgn = -1elif c == 'x':if S[i-1].isdigit():s_x += num*sgnnum = 0else:s_x += 1*sgnsgn = g_sgnif s_x == 0:if res == 0:return "Infinite solutions"else:return "No solution"else:return 'x='+str(-1*res//s_x)

