leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

0592.cpp (1081B)


0 class Solution {
1 public:
2 string fractionAddition(const string &expression) const {
3 const int n = size(expression);
4 int numerator = 0, denominator = 1;
6 for (int i = 0; i < n;) {
7 int sign = 1;
8 if (expression[i] == '+' || expression[i] == '-') {
9 if (expression[i] == '-') sign = -1;
10 i++;
11 }
13 int num = 0;
14 while (i < n && isdigit(expression[i])) {
15 num = num * 10 + (expression[i] - '0');
16 i++;
17 }
18 num *= sign;
20 i++;
22 int den = 0;
23 while (i < n && isdigit(expression[i])) {
24 den = den * 10 + (expression[i] - '0');
25 i++;
26 }
28 numerator = numerator * den + num * denominator;
29 denominator *= den;
31 int gcdVal = gcd(abs(numerator), denominator);
32 numerator /= gcdVal;
33 denominator /= gcdVal;
34 }
36 return to_string(numerator) + "/" + to_string(denominator);
37 }
38 };