标签:leetcode解题报告 面试题 算法 java
https://oj.leetcode.com/problems/roman-to-integer/解题思路,有二条处理逻辑:
一,判断当前字符是否比next字符小,如果小的话需要用下一个字符减去当前字符加到最终结果字符身上。
二,否则的话,就把当前字符直接加到最终结果字符。
下面是AC代码:
public class Solution {
HashMap<Character, Integer> romanToIntMap = new HashMap<Character, Integer>() {
{
put('I', new Integer(1));
put('V', new Integer(5));
put('X', new Integer(10));
put('L', new Integer(50));
put('C', new Integer(100));
put('D', new Integer(500));
put('M', new Integer(1000));
}
};
public int romanToInt(String s) {
int ret = 0;
int i = 0;
while(i<s.length()) {
if(s.charAt(i)=='I'||s.charAt(i)=='X'||s.charAt(i)=='C') {
if((i+1)<=(s.length()-1)&&romanToIntMap.get(s.charAt(i))<romanToIntMap.get(s.charAt(i+1))) {
ret += romanToIntMap.get(s.charAt(i+1)) - romanToIntMap.get(s.charAt(i));
i = i + 2;
continue;
}
}
ret += romanToIntMap.get(s.charAt(i));
i++;
}
return ret;
}
}LeetCode Roman to Integer 罗马字符转数字 解题报告
标签:leetcode解题报告 面试题 算法 java
原文地址:http://blog.csdn.net/worldwindjp/article/details/42062711