原题:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
即将输入的整数转换成罗马数字。
思考过程:
一开始不了解罗马数字,后来看了别人的博客以及解法非常简单,意识到罗马数字计数原理和平时所用十进制数是一样的,只是表示方法不同。
解题思路:
String[] romanNumber = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int[] integerNumber = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4 ,1};
这是两者转化关系。从1000开始,如果输入的数x大于1000,就在string类型 res里加上M,x减少一千,以此循环直至x<1000,继续判断900就可以了,以此类推。
结果代码:
public String intToRoman(int num) { String[] romanNumber = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; int[] integerNumber = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4 ,1}; String res = ""; for (int i = 0;num > 0;i++){ while (num >= integerNumber[i]){ res += romanNumber[i]; num -= integerNumber[i]; } }return res; }编写过程中intellj idea告诉我res没有初始化,于是我用String res = null,结果发现这样res开头就有了null这串字符。百度查了空string初始化,就用了String res = ""。很基础的问题,我都不会,见笑了。对我来说重要的是:我现在会了,而且以后也会了。