592

class Solution:
    def fractionAddition(self, exp: str) -> str:
        cnt=[]
        i,n,m,s=0,len(exp),1,0
        while i<n:
            if exp[i]>='0' and exp[i]<='9':
                c=0
                while i<n and exp[i]>='0' and exp[i]<='9':
                    c=c*10+int(exp[i])
                    i+=1
                cnt.append(c)
            elif exp[i]=='-':
                c=0
                i+=1
                while i<n and exp[i]>='0' and exp[i]<='9':
                    c=c*10+int(exp[i])
                    i+=1
                cnt.append(-c)
            else:
                i+=1
        vis=[0 for _ in range(0,11)]
        for j in range(1,len(cnt),2):
            vis[cnt[j]]=1
        for j in range(1,11):
            if vis[j]==1:
                m*=j
        for j in range(0,len(cnt),2):
            s+=cnt[j]*m//cnt[j+1]
        if s==0:
            return "0/1"
        g=gcd(s,m)
        s,m=s//g,m//g
        return str(s)+"/"+str(m)

 

posted @ 2022-07-27 10:06  kris-phl  阅读(10)  评论(0)    收藏  举报