12. Integer to Roman

来源:互联网 发布:热血江湖登录器源码 编辑:程序博客网 时间:2024/05/24 23:13

Given an integer, convert it to a roman numeral.

Input is guaranteed to be within the range from 1 to 3999.


一路扫下来,减去相应的表示形成字串。

public String intToRoman(int num){String s=new String();int i,j;if(num>=1000){i=num/1000;for(j=0;j<i;j++)s+="M";num-=1000*i;}if(num>=900){s+="CM";num-=900;}if(num>=500){s+="D";num-=500;}if(num>=400){s+="CD";num-=400;}if(num>=100){i=num/100;for(j=0;j<i;j++)s+="C";num-=100*i;}if(num>=90){s+="XC";num-=90;}if(num>=50){s+="L";num-=50;}if(num>=40){s+="XL";num-=40;}if(num>=10){i=num/10;for(j=0;j<i;j++)s+="X";num-=10*i;}if(num>=9){s+="IX";num-=9;}if(num>=5){s+="V";num-=5;}if(num>=4){s+="IV";num-=4;}for(j=0;j<num;j++)s+="I";return s;}


-----------------------------------------------------------------------------------------------------------------------------------------

整洁一点就打个表

https://discuss.leetcode.com/topic/20510/my-java-solution-easy-to-understand

public String intToRoman(int number) {          int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };          String[] numerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };          StringBuilder result = new StringBuilder();          for (int i = 0; i < values.length; i++) {              while (number >= values[i]) {                  number -= values[i];                  result.append(numerals[i]);              }          }          return result.toString();      }  


0 0
原创粉丝点击