leetcode640.求解方程
好久没写了,这是一个自动机问题。
class Solution:
def solveEquation(self, equation: str) -> str:
l=equation.split('=')
print(l)
def cal(s):
status=0
ssum=0
xsum=0
ss=[0,0]
num=0
xsta=0
sign=1
for i in s:
if status==0:
if i=='x':
xsta=1
num=1
status=1
elif i.isdigit():
num=int(i)
status=2
elif i=='-':
sign=-1
elif status==1:
if i=='+':
ss[xsta]+=num*sign
xsta=0
sign=1
status=0
elif i=='-':
ss[xsta]+=num*sign
xsta=0
sign=-1
status=0
elif status==2:
if i.isdigit():
num*=10
num+=int(i)
elif i=='+':
ss[xsta]+=num*sign
sign=1
xsta=0
status=0
elif i=='x':
status=1
xsta=1
elif i=='-':
ss[xsta]+=num*sign
xsta=0
sign=-1
status=0
ss[xsta]+=num*sign
return ss
a=cal(l[0])
b=cal(l[1])
print(a)
print(b)
xnum=a[1]-b[1]
num=b[0]-a[0]
if xnum==0:
if num==0:
return "Infinite solutions"
return "No solution"
return "x="+str(num//xnum)

浙公网安备 33010602011771号