您的位置:首页 > 其它

[LeetCode] 13. Roman to Integer

2018-03-30 15:25 411 查看
Given a roman numeral, convert it to an integer.Input is guaranteed to be within the range from 1 to 3999.

class Solution {
private int getThousands(String string){
return string.length()*1000;
}
private int getHunderds(String string){
switch (string){
case "C": return 100;
case "CC": return 200;
case "CCC": return 300;
case "CD": return 400;
case "D": return 500;
case "DC": return 600;
case "DCC": return 700;
case "DCCC": return 800;
case "CM": return 900;
default: return 0;
}
}
private int getTens(String string){
switch (string){
case "X": return 10;
case "XX": return 20;
case "XXX": return 30;
case "XL": return 40;
case "L": return 50;
case "LX": return 60;
case "LXX": return 70;
case "LXXX": return 80;
case "XC": return 90;
default: return 0;
}
}
private int getOnes(String string){
switch (string){
case "I": return 1;
case "II": return 2;
case "III": return 3;
case "IV": return 4;
case "V": return 5;
case "VI": return 6;
case "VII": return 7;
case "VIII": return 8;
case "IX": return 9;
default: return 0;
}
}
public int romanToInt(String s) {
int j = 0,i = 0,length = s.length();
while (j < length && s.charAt(j) == 'M') j++;
int thousands = getThousands(s.substring(i,j));
i = j;
while (j < length && (s.charAt(j) == 'C' || s.charAt(j) == 'D' || s.charAt(j) == 'M')) j++;
int hunderds = getHunderds(s.substring(i,j));
i = j;
while (j < length && (s.charAt(j) == 'X' || s.charAt(j) == 'L' || s.charAt(j) == 'C')) j++;
int tens = getTens(s.substring(i,j));
int ones = getOnes(s.substring(j,length));
return thousands + hunderds + tens + ones;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: