Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //基本字符:
- //I、V、X、L、C、D、M
- //相应的阿拉伯数字表示为:
- //1、5、10、50、100、500、1000倍
- //基本数字Ⅰ、X 、C 中的任何一个,自身连用构成数目,或者放在大数的右边连用构成数目,都不能超过三个;放在大数的左边只能用一个。
- //不能把基本数字V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目,只能使用一个。
- //V 和X 左边的小数字只能用Ⅰ。
- //L 和C 左边的小数字只能用X。
- //D 和M 左边的小数字只能用C。
- //其次,罗马数字转阿拉伯数字规则(仅限于3999以内):
- //从前向后遍历罗马数字,如果某个数比前一个数小,则加上该数。反之,减去前一个数的两倍然后加上该数(XIV=14-- 10+1-1*2+5=14)
- //这题是Integer 转roman,关键点是发现4,9是减法,然后把所有的4,9例子找出来,然后建立两个array,然后数字做减法,从最大的开始减,//记住用while循环。
- public class Solution {
- public String intToRoman(int num) {
- if(num<0)
- return null;
- String[] roman = {"M","CM","D","CD", "C","XC","L","XL","X","IX","V","IV","I"};
- int[] digits = {1000,900,500,400,100,90,50,40,10,9,5,4,1};
- StringBuilder sb= new StringBuilder();
- int i =0;
- while(num!=0){
- while(i<roman.length && num>=digits[i]){
- sb.append(roman[i]);
- num=num-digits[i];
- }
- i++;
- }
- return sb.toString();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement