您的位置:首页 > 其它

leetcode解题方案--013--Roman to Integer

2017-10-19 13:03 519 查看

题目

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

分析

将a[i]与a[i+1]的数进行比较,如果i+1大,则i+1 减去i,否则,依次相加。

除此之外,可以用128位char的数组来存储罗马字母对应的值。

public static int romanToInt(String Roman) {
int[] root = new int[128];
root[(int) 'I'] = 1;
root[(int) 'V'] = 5;
root[(int) 'X'] = 10;
root[(int) 'L'] = 50;
root[(int) 'C'] = 100;
root[(int) 'D'] = 500;
root[(int) 'M'] = 1000;

char[] array = Roman.toCharArray();
int sum = 0;
for (int i = 0; i < array.length; i++) {
if (i + 1 < array.length && root[(int) array[i + 1]] > root[(int) array[i]]) {
sum = sum+root[(int) array[i+1]]-root[(int) array[i]];
i++;
} else {
sum+=root[(int) array[i]];
}
}
return sum;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: