[LeetCode] Roman to Integer
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
这道题主要要搞清楚Roman变成Integer的算法。
记得如果一个数比前面一个数小,那么就作为加数,反之则是前面那个数作为减数。(eg:IV=4,XLV=45,XX=20)
因此我们可以从队尾开始,慢慢判断一个数是该+还是该去-。
代码如下。~
public class Solution {
public int romanToInt(String s) {
if(s==null||s.length()==0){
return 0;
}
HashMap<Character,Integer> hash=new HashMap<Character,Integer>();
hash.put('I',1);
hash.put('V',5);
hash.put('X',10);
hash.put('L',50);
hash.put('C',100);
hash.put('D',500);
hash.put('M',1000);
int len=s.length();
int result=hash.get(s.charAt(len-1));
int compare=result;
for(int i=len-2;i>=0;i--){
int curr=hash.get(s.charAt(i));
if(curr>=compare){
result=result+curr;
}else{
result=result-curr;
}
compare=curr;
}
return result;
}
}
浙公网安备 33010602011771号