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)

  

 

posted @ 2022-08-10 13:23  vdk  阅读(25)  评论(0)    收藏  举报