leetcode12 整数转罗马数字
2020-01-09 本文已影响0人
justonemoretry
![](https://img.haomeiwen.com/i14289546/4e34ae5a5efa5444.png)
这个题,最开始的思路是用map去建立数字和罗马数字之间的映射,后面发现这样是无序的,没办法先用最大的除数去比较是否还大于最大除数,后面用数组来实现,最开始的方法是先用numbers中的数字倒序去减num,每减一次,拼接一次对应的罗马数字,这种数字比较的,用累减能实现的,都可以用除法去简化,用除法简化后如下:
class Solution {
public String intToRoman(int num) {
int[] numbers = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000};
String[] romans = {"I", "IV", "V", "IX", "X", "XL", "L", "XC", "C", "CD", "D", "CM", "M"};
String res = "";
int length = numbers.length;
for (int i = length - 1; i >= 0; i--) {
int s = num / numbers[i];
while (s > 0) {
res += romans[i];
s--;
}
num %= numbers[i];
}
return res;
}
}