【013-Roman to Integer (罗马数字转成整数)】
【LeetCode-面试算法经典-Java实现】【所有题目目录索引】
原题
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
题目大意
给定一个罗马数字,将其转换成对应的整数。
输入的数字在1-3999之间。
解题思路
根据罗马数字与整数数字对应关系进行加法操作,如果前一个数字比后一个大就相减,否则进行相加。
代码实现
public class Solution {
public int romanToInt(String s) {
int result = 0;
int prev = 0; // 记录前一个数字的值
for (int i = s.length() - 1; i > -1; i--) {
switch (s.charAt(i)) {
case ‘I‘: // 1
if (1 < prev) {
result -= 1;
} else {
result += 1;
}
prev = 1;
break;
case ‘V‘: // 5
if (5 < prev) {
result -= 5;
} else {
result += 5;
}
prev = 5;
break;
case ‘X‘: // 10
if (10 < prev) {
result -= 10;
} else {
result += 10;
}
prev = 10;
break;
case ‘L‘: // 50
if (50 < prev) {
result -= 50;
} else {
result += 50;
}
prev = 50;
break;
case ‘C‘: // 100
if (100 < prev) {
result -= 100;
} else {
result += 100;
}
prev = 100;
break;
case ‘D‘: // 500
if (500 < prev) {
result -= 500;
} else {
result += 500;
}
prev = 500;
break;
case ‘M‘: // 1000
result += 1000;
prev = 1000;
break;
}
}
return result;
}
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。
特别说明
欢迎转载,转载请注明出处【http://blog.csdn.net/derrantcm/article/details/46963377】
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-13 21:58:46