一、题目叙述:
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Subscribe to see which companies asked this question
二、解题思路:
吼,不要脸我是抄的。。。本来只想看一下罗马数字是神马规律,结果顺道把人家程序也看了。。。没思路,不要脸。
三、源源源码:
public class Solution
{
public int romanToInt(String s)
{
// String roma = "ⅠⅤⅩLCDM";
// char[] roma = {'Ⅰ', 'Ⅴ', 'Ⅹ', 'L', 'C', 'D', 'M'};
int[] ro = {1, 5, 10, 50, 100, 500, 1000};
int sum = ro[indexRe(s.charAt(0))];
// System.out.println(sum);
for (int i = 0; i < s.length() - 1; i ++)
{
if ( ro[indexRe(s.charAt(i+1))]<= ro[indexRe(s.charAt(i))])
sum = sum + ro[indexRe(s.charAt(i+1))];
else
sum = sum + ro[indexRe(s.charAt(i+1))] - 2 * ro[indexRe(s.charAt(i))];
}
return sum;
}
public int indexRe(char c)
{
char[] roma = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
int i;
for (i = 0; i < 7; i++)
{
if (c == roma[i])
break;
}
return i;
}
public static void main(String args[])
{
String s = "DCXXI";
Solution a = new Solution();
System.out.println(a.romanToInt(s));
}
}