leetcode-13 罗马数字转整数
描述
思路
将所有的组合罗马数字替换成新的单个字符,建立字典,依次计算相加即可
例如:IV ------> a 记为4,IX --------> b 记为9,以此类推
代码
class Solution {
public int romanToInt(String s) {
s = s.replace("IV","a");
s = s.replace("IX","b");
s = s.replace("XL","c");
s = s.replace("XC","d");
s = s.replace("CD","e");
s = s.replace("CM","f");
int res = 0;
for(int i = 0; i < s.length(); i++){
res += getValue(s.charAt(i));
}
return res;
}
public int getValue(char c){
switch(c){
case 'I': return 1;
case 'V': return 5;
case 'X': return 10;
case 'L': return 50
case 'C': return 100;
case 'D': return 500;
case 'M': return 1000;
case 'a': return 4;
case 'b': return 9;
case 'c': return 40;
case 'd': return 90
case 'e': return 400;
case 'f': return 900;
}
return 0;
}
}
拓展:12. 整数转罗马数字
class Solution{
public String intToRoman(int num){
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1};
String[] reps = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I"};
String res = "";
for(int i = 0; i < 13; i ++){
while(num >= values[i]){
num -= values[i];
res += reps[i];
}
}
return res;
}
}