Leetcode -- Integer to Roman

来源:互联网 发布:企查查软件下载 编辑:程序博客网 时间:2024/06/05 06:03

题目:

Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.

分析:罗马数字,转到阿拉伯数字是相当有规律的。比如9 -- IX, 90 -- XC, 99  -- XCIX

思路:map形式,将所有特殊的都存储起来,然后在直接通过key获取相应的值。

代码:

string intToRoman(int num) {        map <int, map<int, string>>map1;          map1[10][1] = "I";        map1[10][2] = "II";        map1[10][3] = "III";        map1[10][4] = "IV";        map1[10][5] = "V";        map1[10][6] = "VI";        map1[10][7] = "VII";        map1[10][8] = "VIII";        map1[10][9] = "IX";                map1[100][1] = "X";        map1[100][2] = "XX";        map1[100][3] = "XXX";        map1[100][4] = "XL";        map1[100][5] = "L";        map1[100][6] = "LX";        map1[100][7] = "LXX";        map1[100][8] = "LXXX";        map1[100][9] = "XC";                map1[1000][1] = "C";        map1[1000][2] = "CC";        map1[1000][3] = "CCC";        map1[1000][4] = "CD";        map1[1000][5] = "D";        map1[1000][6] = "DC";        map1[1000][7] = "DCC";        map1[1000][8] = "DCCC";        map1[1000][9] = "CM";                map1[10000][1] ="M";        map1[10000][2] = "MM";        map1[10000][3] = "MMM";                int a = 10;        int b;        string s = "";        while(num)        {            b = num%10;            if(b != 0)            {                s = map1[a][b] + s;            }            num = num/10;            a = a * 10;        }        return s;    }


更为简单的解法(网上抄的-_-):

  1.  public String intToRoman(int number) {  
  2.         int[] values = {1000900500400100905040109541 };  
  3.         String[] numerals = {"M""CM""D""CD""C""XC""L""XL""X""IX""V""IV""I" };  
  4.         StringBuilder result = new StringBuilder();  
  5.         for (int i = 0; i < values.length; i++) {  
  6.             while (number >= values[i]) {  
  7.                 number -= values[i];  
  8.                 result.append(numerals[i]);  
  9.             }  
  10.         }  
  11.         return result.toString();  
  12.     }


0 0
原创粉丝点击