class Solution {
// 思路
// 定义两个数组变量分别存储【字符,数值】, 然后遍历
// 如果大于i, 当前值减去i,字符串加值,只要不等于0就继续往前滑动
// 因为4,9,40,90,400,900是特例,所以也存到之前的地方
// 从大到小存入不同数值
int[] keys = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
// 将上面对应数值存入字符数组
String[] values = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
// 定义转换函数【给定整数转罗马数字】
public String intToRoman(int num) {
// 由于需要字符串连接,所以使用使用StringBuilder类
// .append(String str) 字符串连接
// .toString():返回一个与缓冲器内容相同的字符串
StringBuilder ans = new StringBuilder();
//遍历数组,判断当前值与数组值大小,大直接减,若小往后滑
for(int i = 0; i<keys.length;i++){
if(num>=0){
// 要不断相减,比如2001,可能就存在两个1000的情况
while(num>=keys[i]){
num-=keys[i];
ans.append(values[i]);
}
}
}
return ans.toString();
}
}
每日一道Leetcode -12. 整数转罗马数字【字符串】
最新推荐文章于 2024-04-23 17:09:00 发布