Advertisement
Guest User

Untitled

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