• 【JAVA、C++】LeetCode 012 Integer to Roman


    Given an integer, convert it to a roman numeral.

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

    本题思路比较简单,难度主要集中在罗马数字本身,直接贴代码。

    思路一,从高位开始:

    JAVA:

    	static 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" };
    		//不推荐用String类型,因为+的本质是建立StringBuilder()的过程
    		StringBuilder result = new StringBuilder();
    		for (int i = 0; i < values.length; i++) {
    			while (number >= values[i]) {
    				number -= values[i];
    				result.append(numerals[i]);
    			}
    		}
    		return new String(result);
    	}
    

     C++:

     1 class Solution {
     2 public:
     3     string intToRoman(int num) {
     4         vector<int> values = { 1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
     5         string numerals[] = { "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X","IX", "V", "IV","I" };
     6         string res;
     7         for (int i = 0; i < values.size(); i++) 
     8             while (num >= values[i]) {
     9                 num -= values[i];
    10                 res+=numerals[i];
    11             }
    12         return res;
    13     }
    14 };

    思路二,从低位开始:

    JAVA:

    static public String intToRoman(int num) {
            String Roman[][] = {
                    {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
                    {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
                    {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
                    {"", "M", "MM", "MMM"}
            };
            StringBuilder result = new StringBuilder();
            for(int i=0;i<Roman.length;i++,num/=10)
                result.insert(0,Roman[i][num % 10]);
            return new String(result);
        }
    
  • 相关阅读:
    一点一点学写Makefile(3)-增加第三方库和头文件
    一点一点学写Makefile(2)-自动搜所当前目录下的所有源文件
    一点一点学写Makefile-1
    linux下使用libxml2实现对xml文件的读取及查询
    struts2 谷歌浏览器保存date类型数据时报错
    复习
    day31
    day30
    作业29
    day29
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4464969.html
Copyright © 2020-2023  润新知