i-am-groot
Senior Member
Python:
class Fraction:
def __init__(self, numerator: int, denominator: int):
self.numerator = numerator
self.denominator = denominator
self.__simplify()
def add(self, f: 'Fraction') -> 'Fraction':
return Fraction(
self.numerator * f.denominator + f.numerator * self.denominator,
self.denominator * f.denominator
)
def __str__(self) -> str:
return '{}/{}'.format(self.numerator, self.denominator)
def __simplify(self) -> None:
gcd_num = gcd(self.numerator, self.denominator)
self.numerator //= gcd_num
self.denominator //= gcd_num
class Solution:
def fractionAddition(self, expression: str) -> str:
ans = None
sign = 1
sub_expression = str()
for c in (expression + '+'):
if c in ['-', '+']:
if sub_expression:
numerator, denominator = sub_expression.split('/')
fraction = Fraction(sign * int(numerator), int(denominator))
ans = fraction if not ans else ans.add(fraction)
sign = -1 if c == '-' else 1
sub_expression = str()
else:
sub_expression += c
return str(ans)

giờ chỉ cần code accepted thôi chứ cần đếch gì clean 

