程式語言 - LeetCode - C++ - 592. Fraction Addition and Subtraction



題目:


公式:


解答:

class Solution {
public:
    string fractionAddition(string expression) {
        int i = 0;
        int num = 0;
        int den = 1;
        int n = expression.size();

        while (i < n) {
            int sign = 1;
            char ch = expression[i];

            if (ch == '+') {
                i += 1;
            }
            else if (ch == '-') {
                sign = -1;
                i += 1;
            }

            int a = 0;
            while (isdigit(expression[i])) {
                a = a * 10 + (expression[i] - '0');
                i += 1;
            }
            a *= sign;

            i += 1;

            int b = 0;
            while (i < n && isdigit(expression[i])) {
                b = b * 10 + (expression[i] - '0');
                i += 1;
            }

            num = num * b + den * a;
            den = den * b;

            int g = gcd(abs(num), den);
            num /= g;
            den /= g;
        }

        return to_string(num) + "/" + to_string(den);
    }
};