题目
罗马数字包含以下七种字符:
I
,V
,X
,L
,C
,D
和M
。给定一个罗马数字,将其转换成整数。
代码
class Solution {
public int romanToInt(String s) {
int num = 0;
while (s.charAt(0) == 'M') {
num += 1000;
if (s.length() == 1)
return num;
else
s = s.substring(1);
}
if (s.length() != 1) {
if (s.charAt(0) == 'C' && s.charAt(1) == 'M') {
num += 900;
if (s.length() == 2)
return num;
else
s = s.substring(2);
}
}
if (s.charAt(0) == 'D') {
num += 500;
if (s.length() == 1)
return num;
else
s = s.substring(1);
}
if (s.length() != 1) {
if (s.charAt(0) == 'C' && s.charAt(1) == 'D') {
num += 400;
if (s.length() == 2)
return num;
else
s = s.substring(2);
}
}
while (s.charAt(0) == 'C') {
num += 100;
if (s.length() == 1)
return num;
else
s = s.substring(1);
}
if (s.length() != 1) {
if (s.charAt(0) == 'X' && s.charAt(1) == 'C') {
num += 90;
if (s.length() == 2)
return num;
else
s = s.substring(2);
}
}
if (s.charAt(0) == 'L') {
num += 50;
if (s.length() == 1)
return num;
else
s = s.substring(1);
}
if (s.length() != 1) {
if (s.charAt(0) == 'X' && s.charAt(1) == 'L') {
num += 40;
if (s.length() == 2)
return num;
else
s = s.substring(2);
}
}
while (s.charAt(0) == 'X') {
num += 10;
if (s.length() == 1)
return num;
else
s = s.substring(1);
}
if (s.charAt(0) == 'V') {
num += 5;
if (s.length() == 1)
return num;
else
s = s.substring(1);
}
if (s.charAt(0) == 'I') {
if (s.length() == 1) {
num++;
return num;
} else if (s.length() == 3) {
num += 3;
return num;
} else if (s.length() == 2) {
if (s.charAt(1) == 'X') {
num += 9;
return num;
}
if (s.charAt(1) == 'V') {
num += 4;
return num;
}
if (s.charAt(0) == 'I') {
num += 2;
return num;
}
}
}
return num;
}
}