Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
my answer:
public class Solution {
public static int toNumber(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;
}
}
public static int romanToInt(String s) {
char ch1,ch2;
int ret=toNumber(s.charAt(0));
for(int i=1;i<s.length();i++){
ch2 = s.charAt(i);
ch1 = s.charAt(i-1);
if(toNumber(ch1)<toNumber(ch2))
ret += toNumber(ch2)-2*toNumber(ch1);
else
ret +=toNumber(ch2);
}
return ret;
}
public static void main(String[] args){
int num = romanToInt("DCXXI");
System.out.println(num);
}
}
Runtime: 9 ms
居然击败了63.64%,吼吼吼~