leetcode013 Roman to Integer

題目

13. Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.

思路:

這道題相比Integer To Roman更簡單,直接從羅馬數字的最低位開始轉換(一個字母一個字母的轉換),每次要記錄下前一次的數,若此次的數比前一次的小,則在結果減去本次的數,否則加上本次的數。

代碼:

private int getNumber(char key)
{
    int res = 0;
    switch(key)
    {
        case 'I':
            res = 1;
            break;
        case 'V':
            res = 5;
            break;
        case 'X':
            res = 10;
            break;
        case 'L':
            res = 50;
            break;
        case 'C':
            res = 100;
            break;
        case 'D':
            res = 500;
            break;
        case 'M':
            res = 1000;
            break;
    }
    return res;
}
public int romanToInt(String s)
{
    char[] s_char = s.toCharArray();
    int i = s_char.length-1;
    int lastNum = 0;
    int res = 0;
    while(i >= 0)
    {
        int tmp = getNumber(s_char[i--]);
        if(tmp < lastNum)
            res -= tmp;
        else
            res += tmp;
        lastNum = tmp;
    }

    return res;
}

結果細節(圖):

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章