您的位置:首页 > 编程语言 > Java开发

【leetcode】【13】Roman to Integer

2016-02-27 11:21 579 查看

一、问题描述

Given a roman numeral, convert it to an integer.

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

二、问题分析

这道题和上一道一样,需要注意罗马数字的一些规则。

三、Java AC代码

public int romanToInt(String s) {
int res = 0;
int[] mid = new int[s.length()];
for(int i=0;i<s.length();i++){
switch (s.charAt(i)) {
case 'I':mid[i] = 1;break;
case 'V':mid[i] = 5;break;
case 'X':mid[i] = 10;break;
case 'L':mid[i] = 50;break;
case 'C':mid[i] = 100;break;
case 'D':mid[i] = 500;break;
case 'M':mid[i] = 1000;break;
}
}
res = mid[s.length()-1];
for(int i= s.length()-2;i>=0;i-- ){
if(mid[i]>=mid[i+1]){
res+=mid[i];
}else {
if(mid[i+1]==5){
while(mid[i]==1){
res--;
i--;
if(i==-1) break;
if(mid[i]!=1) {i++; break;}
}
}else {
res-=mid[i];
}
}
}
return res;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java leetcode math