Skip to content

Commit 9214d15

Browse files
committed
Time: 32 ms (77.96%), Space: 16.5 MB (82.97%) - LeetHub
1 parent 4eb3b81 commit 9214d15

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# time complexity: O(n)
2+
# space complexity: O(log(min(a,b)))
3+
import re
4+
5+
6+
class Solution:
7+
def fractionAddition(self, expression: str) -> str:
8+
num = 0
9+
denom = 1
10+
nums = re.split("/|(?=[-+])", expression)
11+
nums = list(filter(None, nums))
12+
for i in range(0, len(nums), 2):
13+
currNum = int(nums[i])
14+
currDenom = int(nums[i + 1])
15+
num = num * currDenom + currNum * denom
16+
denom = denom * currDenom
17+
gcd = abs(self.findGcd(num, denom))
18+
num //= gcd
19+
denom //= gcd
20+
return str(num) + "/" + str(denom)
21+
22+
def findGcd(self, a: int, b: int) -> int:
23+
if a == 0:
24+
return b
25+
return self.findGcd(b % a, a)
26+
27+
28+
expression = "-1/2+1/2"
29+
print(Solution().fractionAddition(expression))

0 commit comments

Comments
 (0)