13. 罗马数字转整数
题目描述
思路:枚举每一个值
具体代码
class Solution {
public int romanToInt(String s) {
int sum = 0;
char pre = s.charAt(0);
int preNum = getValue(pre);
for(int i=1;i<s.length();i++){
if(preNum<getValue(s.charAt(i))){
sum-=preNum;
preNum=getValue(s.charAt(i));
} else {
sum+=preNum;
preNum=getValue(s.charAt(i));
}
}
return sum+getValue(s.charAt(s.length()-1));
}
public int getValue(char ch){
switch (ch){
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;
}return 0;
}
}
12. 整数转罗马数字
题目描述
思路:枚举每一个值
![]()
具体代码
public class Solution {
public String intToRoman(int num) {
// 把阿拉伯数字与罗马数字可能出现的所有情况和对应关系,放在两个数组中,并且按照阿拉伯数字的大小降序排列
int[] nums = {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"};
StringBuilder stringBuilder = new StringBuilder();
int index = 0;
while (index < 13) {
// 特别注意:这里是等号
while (num >= nums[index]) {
stringBuilder.append(romans[index]);
num -= nums[index];
}
index++;
}
return stringBuilder.toString();
}
}