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)