LeetCode 13. 罗马数字转整数 java 两种解法
Posted oyzg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 13. 罗马数字转整数 java 两种解法相关的知识,希望对你有一定的参考价值。
解题思路
方法一:
1.用哈希表记录每个字母对应的值
2.遍历字符串,如果当前这个字母比后面那个字母小,就减当前字母的值,否则就加
方法二:
模拟
代码:
方法一:
class Solution
public int romanToInt(String s)
Map<Character, Integer> map = new HashMap<Character, Integer>()
put('I', 1);
put('V', 5);
put('X', 10);
put('L', 50);
put('C', 100);
put('D', 500);
put('M', 1000);
;
int ans = 0;
for(int i = 0; i < s.length(); i++)
if(i < s.length()-1 && map.get(s.charAt(i)) < map.get(s.charAt(i+1)))
ans -= map.get(s.charAt(i));
else
ans += map.get(s.charAt(i));
return ans;
方法二:
public int romanToInt(String s)
int ans = 0;
int[] values = 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1;
String[] romans = "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I";
int index = 0;
for(int i = 0; i < romans.length; i++)
if(index < s.length()-1 && s.substring(index, index+2).equals(romans[i]))
ans += values[i];
index += 2;
while(index < s.length() && s.substring(index, index+1).equals(romans[i]))
ans += values[i];
index++;
return ans;
以上是关于LeetCode 13. 罗马数字转整数 java 两种解法的主要内容,如果未能解决你的问题,请参考以下文章