经典算法:转换罗马数字
数字变成罗马数字
http://www.nowcoder.com/questionTerminal/0636c3db0de6437a8a86e58f46aa5c90
import java.util.*; public class Solution { /** * * @param num int整型 * @return string字符串 */ public String intToRoman (int num) { // write code here StringBuffer str = new StringBuffer(); int arr[] = {1,4,5,9,10,40,50,90,100,400,500,900,1000}; String starr[]=new String[]{"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"}; for(int i = arr.length - 1;i >= 0;){ if(num >= arr[i]){ str.append(starr[i]); num = num - arr[i]; }else { i--; } } return str.toString(); } }
比较经典的编程题,对于这里利用枚举法,两个数组长度相同,然后再for循环这里利用率从来没见过的方法就是少了i--,没有了i--这个条件for是无限循环的所以要在for中加上i--,这样就能保证循环的有限性。非常经典的题目,又学到了新东西哈哈。当时是没有思路的,是当算通过整除的方式来计算,但是这样下来真的比较麻烦,而且整体的代码我也没有想到,所以借鉴了一下题解的代码,学到了新方法。