您的位置:首页 > 其它

LeetCode刷题笔录Roman to Integer

2014-08-22 05:46 316 查看
Given a roman numeral, convert it to an integer.

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

和Integer to Roman那题一样挺无聊的。

遇到I, X, C这三个字母的时候要看一眼后面的是不是V,L什么的。如果是,就减去1(或10,100)。如果不是就加上1(或10,100)。剩下的都是遇上什么字母就加上相应的值。

public class Solution {
public int romanToInt(String s) {
int res = 0;
if(s == null || s.length() == 0)
return res;

for(int i = 0; i < s.length(); i++){
switch(s.charAt(i)){
case 'I':
if(i < s.length() - 1 && (s.charAt(i + 1) == 'V' || s.charAt(i + 1) == 'X'))
res -= 1;
else
res += 1;
break;

case 'V':
res += 5;
break;

case 'X':
if(i < s.length() - 1 && (s.charAt(i + 1) == 'L' || s.charAt(i + 1) == 'C'))
res -= 10;
else
res += 10;
break;

case 'L':
res += 50;
break;

case 'C':
if(i < s.length() - 1 && (s.charAt(i + 1) == 'D' || s.charAt(i + 1) == 'M'))
res -= 100;
else
res += 100;
break;

case 'D':
res += 500;
break;

case 'M':
res += 1000;
break;

default:
return 0;
}
}
return res;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: