題目
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;
}