13. 罗马数字转整数
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M。
字符 数值
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
例如, 罗马数字 2 写做 II ,即为两个并列的 1。12 写做 XII ,即为 X + II 。 27 写做 XXVII, 即为 XX + V + II 。
解析
套路就是每次都去算前一个字符,因为前一个字符可能比当前字符小,就需要减去。
class Solution {
public int romanToInt(String s) {
int res = 0;
char pre = ' ';
for(char val: s.toCharArray()){
if(pre ==' '){
pre=val;
continue;
}
if(getValue(pre)<getValue(val)){
res -= getValue(pre);
}else{
res+=getValue(pre);
}
pre = val;
}
res+=getValue(pre);
return res;
}
private int getValue(char ch) {
switch(ch) {
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50;
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
default: return 0;
}
}
}
注意:本文归作者所有,未经作者允许,不得转载