您的位置:首页 > 其它

96. Integer to Roman

2016-01-26 22:54 309 查看
Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.
分析:
将一个数字转化为罗马字符串表示。

大数左边加上小数就是把大数减去这个小数."M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"分别对应1000,900,500,400,100,90,50,40,10,9,5,4,1。以最左边为最大的字符为原则,从大到小判断num的值。

/**
* 将一个数字转化为罗马字符串表示。
* 大数左边加上小数就是把大数减去这个小数.I(1),V(5),X(10),L(50),C(100),D(500),M(1000)。
* 以最左边为最大的字符为原则,从大到小判断num的值。
*/
public String intToRoman(int num) {
StringBuffer sb = new StringBuffer();
String symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
int value[]= {1000,900,500,400,100,90,50,40,10,9,5,4,1};
int i=0;
while(num!=0){
while(num>=value[i]){/*先从罗马数字可以表示的最大值开始依次往后换算*/
sb.append(symbol[i]);
num=num-value[i];
}
i++;
}
return new String(sb);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: