• 【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);
        }
    
  • 相关阅读:
    _getch()函数的一些使用方法
    键盘敲击(keyboard hit)
    计时 GetTickCount() 函数的作用和用法
    1
    关于COLORREF的定义及用法
    C++字符串大小写转换的库函数
    数楼梯(斐波那契数列+高精度)
    回文数(内含高精度加法,字符串是否为回文的判断)
    最短路径Dijkstra算法
    经典八大排序
  • 原文地址:https://www.cnblogs.com/tonyluis/p/4464969.html
Copyright © 2020-2023  润新知