【leetcode】【13】Roman to Integer

来源:互联网 发布:birch算法 编辑:程序博客网 时间:2024/06/05 11:49

一、问题描述

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;}


0 0