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; 5 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 } 12 13 int num = 0; 14 while (i < n && isdigit(expression[i])) { 15 num = num * 10 + (expression[i] - '0'); 16 i++; 17 } 18 num *= sign; 19 20 i++; 21 22 int den = 0; 23 while (i < n && isdigit(expression[i])) { 24 den = den * 10 + (expression[i] - '0'); 25 i++; 26 } 27 28 numerator = numerator * den + num * denominator; 29 denominator *= den; 30 31 int gcdVal = gcd(abs(numerator), denominator); 32 numerator /= gcdVal; 33 denominator /= gcdVal; 34 } 35 36 return to_string(numerator) + "/" + to_string(denominator); 37 } 38 };