JAVA Roman to Integer 罗马数转换为int型方法
原題:
13.?Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
羅馬數字個位到千位表示方法:
'I','V','X','L','C','D','M' ?分別為:1,5,10,50,100,500,1000
對于一個羅馬數的字符串,我們只需要用字符串的charAt(int index)方法,對它的每一個數進行判斷,總和相加,要注意的是,每逢IV,IX。XL,XC,CD,CM這些數不能直接讀取,要判斷他們的前一位是否為對應得字符,處理后相加像,這里給出判斷方法:
if (i>0&&s.charAt(i-1)=='I') {
result=result+3;}
? ? ? ?else {
? ? ? ?result=result+5;
}
比較的是IV這個羅馬數。
整個代碼如下:
?public int romanToInt(String s) {
? ? ? int result=0;
? ? ??
? ? ? for (int i = 0; i < s.length(); i++) {
char tail=s.charAt(i);
switch (tail) {
case 'I':result=result+1;
break;
? ? ? ? ? ? case 'V':if (i>0&&s.charAt(i-1)=='I') {
result=result+3;
}
? ? ? ? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? ? ? result=result+5;
}
? ? ? ? ? ? break;
? ? ? ? ? ? case 'X':
? ? ? ? ? ? if (i>0&&s.charAt(i-1)=='I') {
result=result+8;
}
? ? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? result=result+10;
}
? ? ? ? ? ? break;
? ? ? ? ? ? case 'L':
? ? ? ? ? ? if (i>0&&s.charAt(i-1)=='X') {
result=result+30;
}
? ? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? result=result+50;
}
? ? ? ? ? ? break;
? ? ? ? ? ? case 'C':
? ? ? ? ? ? if (i>0&&s.charAt(i-1)=='X') {
result=result+80;
}
? ? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? result=result+100;
}
? ? ? ? ? ? break;
? ? ? ? ? ? case 'D':
? ? ? ? ? ? if (i>0&&s.charAt(i-1)=='C') {
result=result+300;
}
? ? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? result=result+500;
}
? ? ? ? ? ? break;
? ? ? ? ? ? case 'M':
? ? ? ? ? ? if (i>0&&s.charAt(i-1)=='C') {
result=result+800;
}
? ? ? ? ? ? ? ? ?else {
? ? ? ? ? ? ? ? result=result+1000;
}
? ? ? ? ? ? break;
default:
break;
}
}
? ? ? return result;
? ? }
最后運行結果:
LeetCode提交結果展示:
總結
以上是生活随笔為你收集整理的JAVA Roman to Integer 罗马数转换为int型方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS经典面试题05-变量连续声明var
- 下一篇: JAVA将 带有空格或特殊字符的字符串转