분수 덧셈과 뺄셈
expression
이 주어지면 계산 결과를 문자열 형식으로 반환합니다.최종 결과는 irreducible fraction 이어야 합니다. 최종 결과가 정수인 경우 분모가 있는 분수 형식으로 변경합니다
1
. 따라서 이 경우 2
는 2/1
로 변환되어야 합니다.예 1:
입력: 식 = "-1/2+1/2"
출력: "0/1"
예 2:
입력: 식 = "-1/2+1/2+1/3"
출력: "1/3"
예 3:
입력: 식 = "1/3-1/2"
출력: "-1/6"
제약:
'0'
~ '9'
, '/'
, '+'
및 '-'
만 포함됩니다. 출력도 마찬가지입니다. ±numerator/denominator
입니다. 첫 번째 입력 분수 또는 출력이 양수이면 '+'
가 생략됩니다. [1, 10]
범위에 있습니다. 분모가 1
이면 이 분수가 실제로 위에서 정의한 분수 형식의 정수임을 의미합니다. [1, 10]
범위에 있습니다. 해결책:
class Solution:
def gcd(self, a, b):
while b:
a, b = b, a % b
return a
def lcm(self, arr):
n = len(arr)
curr = arr[0]
for i in range(1, n):
l = arr[i]
curr = (curr * l) // self.gcd(curr, l)
return curr
def fractionAddition(self, expression: str) -> str:
expression += "x"
sign = 1
chunk = ""
nums = []
for c in expression:
if c == "+" or c == "-" or c == "x":
if len(chunk) > 0:
a, b = chunk.split("/")
a, b = int(a), int(b)
nums.append([sign * a, b])
chunk = ""
if c == "+":
sign = 1
elif c == "-":
sign = -1
else:
chunk += c
mul = self.lcm([num[1] for num in nums])
ans = sum([num[0] * mul // num[1] for num in nums])
hcf = self.gcd(ans, mul)
return "{}/{}".format(ans // hcf, mul // hcf)
Reference
이 문제에 관하여(분수 덧셈과 뺄셈), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/theabbie/fraction-addition-and-subtraction-2cb1텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)