羅馬數(shù)字的表示方式
I = 1
V = 5
X = 10
L = 50
C = 100
D = 500
M = 1000
羅馬數(shù)字的計(jì)數(shù)方式:
- 相同的數(shù)字連寫漂彤,表示將這些數(shù)字相加
- 小的數(shù)字寫在大的數(shù)字右邊纷跛,表示這這個(gè)數(shù)字相加
- 大的數(shù)字寫在小的數(shù)字右邊苫纤,表示用大的數(shù)字減去小的數(shù)字。
代碼思路:
先將I,V,X,L,C,D,M 轉(zhuǎn)換成其表示的數(shù)字
然后將字符數(shù)組的中的值進(jìn)行比較
pre >= now ,就將這兩個(gè)數(shù)相加
pre<now ,將這兩個(gè)數(shù)相減
此時(shí)需要注意握爷,這個(gè)小的數(shù)在上一輪中樟凄,已經(jīng)被加過烧给,這一輪假如只減一次,一加一減相當(dāng)于值沒有變侵浸;所以這次要將小的數(shù)減兩次
public class Solution {
public int romanToInt(String s) {
char[] num = s.toCharArray();
int pre = charToInt(num[0]);
int result = pre;
int now = 0;
for(int j = 1;j<s.length();j++)
{
now = charToInt(num[j]);
if(pre >= now)
{
result += now;
}
else
{
result = result +now - 2 * pre;
}
pre = now;
}
return result;
}
public int charToInt(char c)
{
int value = 0;
switch(c)
{
case 'I':
value = 1;
break;
case 'V':
value = 5;
break;
case 'X':
value = 10;
break;
case 'L':
value = 50;
break;
case 'C':
value = 100;
break;
case 'D':
value = 500;
break;
case 'M':
value = 1000;
break;
}
return value;
}
}