程式語言 - LeetCode - C - 13. Roman to Integer



題目:


解答:

int toInt(char ch)
{
    if (ch == 'I') {
        return 1;
    }
    else if (ch == 'V') {
        return 5;
    }
    else if (ch == 'X') {
        return 10;
    }
    else if (ch == 'L') {
        return 50;
    }
    else if (ch == 'C') {
        return 100;
    }
    else if (ch == 'D') {
        return 500;
    }
    else if (ch == 'M') {
        return 1000;
    }
    return -1;
}

int romanToInt(char *s)
{
    int len = strlen(s);
    int i = 0;
    int r = 0;
    int t0 = 0;
    int t1 = 0;
    
    for (i = 0; i < len; i++) {
        t0 = toInt(s[i]);
        if (i != (len - 1)) {
            t1 = toInt(s[i + 1]);
            if (t0 < t1) {
                r += (t1 - t0);
                i += 1;
            }
            else{
                r += t0;
            }
        }
        else{
            r += t0;
        }
    }
    return r;
}