12. Integer to Roman

Given an integer, convert it to a roman numeral.

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

char* intToRoman(int num) {
    char* ret = malloc(sizeof(char)*13); //Each digit at maximum be written as 3 Roman character
    char* p = ret;
    char roman[4][2]={
        ‘M‘, ‘ ‘,
        ‘C‘, ‘D‘,
        ‘X‘, ‘L‘,
        ‘I‘, ‘V‘
    };
    int result;
    int benchmark = 1000;

    for(int len = 0; len < 4; len++){
        result = num/benchmark;
        num = num%benchmark;
        if(9 == result){
            *p = roman[len][0];
            p++;
            *p = roman[len-1][0];
            p++;
        }
        else if( result >= 5){
            *p = roman[len][1];
            p++;
            for(int i = 0; i < result-5; i++){
                *p = roman[len][0];
                p++;
            }
        }
        else if(4 == result){
            *p = roman[len][0];
            p++;
            *p = roman[len][1];
            p++;
        }
        else{
            for(int i = 0; i < result; i++){
                *p = roman[len][0];
                p++;
            }
        }

        benchmark /= 10 ;
    }
    *p = ‘\0‘;
    return ret;
}
时间: 2024-11-05 11:28:14

12. Integer to Roman的相关文章

leetCode 12. Integer to Roman | 字符串 | Medium

12. Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 题目大意: 将一个给定的阿拉伯数字转换成罗马数字. 思路: 这题看到的时候,想的太多. 其实很简单,将千位,百位,十位,个位都表示出来,然后组合即可. 代码如下: class Solution { public:     string int

12. Integer to Roman &amp;&amp; 13. Roman to Integer &amp;&amp; 273. Integer to English Words

12. Integer to Roman Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. Hide Tags Math String Hide Similar Problems (E) Roman to Integer (H) Integer to English Words public class Solution { pub

leedCode练题——12. Integer to Roman

1.题目 12. Integer to Roman Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000 For example, two is written as II in Roman numeral, just two one's added together. Twelve i

[LeetCode] 12. Integer to Roman ☆☆

Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 解释: 罗马数字采用七个罗马字母作数字.即Ⅰ(1).X(10).C(100).M(1000).V(5).L(50).D(500).记数的方法: 相同的数字连写,所表示的数等于这些数字相加得到的数,如 Ⅲ=3: 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数,如 Ⅷ=8.

【leetcode】12. Integer to Roman

题目描述: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 解题思路: 注意到用例比较少,所以采用以空间换时间的方法,把所有的结果列出,然后组合出输入值n的字符串即可. 具体代码: 1 public class Solution { 2 public static String intToRoman(int num) { 3 St

12. Integer to Roman java solutions

Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 基本字符 I V X L C D M 相应的阿拉伯数字表示为 1 5 10 50 100 500 1000 相同的数字连写,所表示的数等于这些数字相加得到的数,如:Ⅲ = 3: 小的数字在大的数字的右边,所表示的数等于这些数字相加得到的数, 如:Ⅷ = 8:Ⅻ = 12: 小的数字,

LeetCode 12 Integer to Roman(C,C++,Java,Python)

Problem: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. Solution: 根据数字将每一位转换为罗马字符串即可,时间复杂度O(len(num)) 题目大意: 给一个整数,将整数调整为罗马数字,关于罗马数字的定义见这里:罗马数字 个位数举例 Ⅰ,1 ]Ⅱ,2] Ⅲ,3] Ⅳ,4 ]Ⅴ,5 ]Ⅵ,6]Ⅶ,7] Ⅷ,8 ]Ⅸ

12. Integer to Roman 整数转罗马数字

Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 class Solution:     def intToRoman(self, num):         """     

LeetCode 12 integer to roman

Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999 与罗马字符转数字类似,注意按级处理. string intToRoman(int num) { string sRet; int iNum = num; while(iNum > 0) { if(iNum < 5) { if(iNum == 4) { sRet += "IV