题目:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
大意:
给定一个罗马数字,将其转换成对应的整数。
输入的数字在1-3999之间。
思路:
根据罗马数字与整数的对应关系进行加减法操作,从低位向高位计算,若高位比低位的数字小则减,否则进行加。
代码:
public class Solution {
public int romanToInt(String s) {
int prev = 0;
int result = 0;
for(int i = s.length() - 1; i > -1; i--) {
switch(s.charAt(i)) {
case 'I': //1
if(1 < prev) {
result -= 1;
} else {
result += 1;
}
prev = 1;
break;
case 'V': //5
if(5 < prev) {
result -= 5;
} else {
result += 5;
}
prev = 5;
break;
case 'X': //10
if(10 < prev) {
result -= 10;
} else {
result += 10;
}
prev = 10;
break;
case 'L': //50
if(50 < prev) {
result -= 50;
} else {
result += 50;
}
prev = 50;
break;
case 'C': //100
if(100 < prev) {
result -= 100;
} else {
result += 100;
}
prev = 100;
break;
case 'D': //500
if(500 < prev) {
result -= 500;
} else {
result += 500;
}
prev = 500;
break;
case 'M': //1000
result += 1000;
prev = 1000;
break;
}
}
return result;
}
}
转自:DERRANTCM博客