LeetCode 12 int转罗马数字

class Solution {
public:
    string intToRoman(int num) {
        string M[] = {"", "M", "MM", "MMM"}; //千位,从1000到三千
        string C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"};  //百位,从100到900
        string X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"};  //十位,从10到90
        string I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"};  //个位,从1到9
        string roman = "";
        return roman+M[num/1000]+C[num%1000/100] + X[num%100/10] + I[num%10];
    }
};
时间: 2024-10-07 14:22:03

LeetCode 12 int转罗马数字的相关文章

[leetcode] 12. 整数转罗马数字

12. 整数转罗马数字 字符串处理,题超级简单,读懂题直接开干就行. 基本思路就是从大往小一点一点的来表示,具体看代码把: class Solution { public: string intToRoman(int num) { string ans = ""; int m = 0; m = num / 1000; for (int i = 0; i < m; i++) { ans += 'M'; } num %= 1000; if (num >= 900) { ans

LeetCode 12. 整数转罗马数字(Integer to Roman)

题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 写做  XXVII, 即为 XX + V + II . 通常情况下,罗马数字中小的数字在大的数字的右边.但也存在特例,例如 4 不写做 IIII,而是 IV.数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到

LeetCode 12 - 整数转罗马数字 - [简单模拟]

题目链接:https://leetcode-cn.com/problems/integer-to-roman/ 题解: 把 $1,4,5,9,10,40,50, \cdots, 900, 1000$ 均看做档位,优先转化大的档位,直到不能转化为止,然后降一个档位,继续转化,反复如此直到 $num=0$. AC代码: struct Solution { int o[13]={1,4,5,9,10,40,50,90,100,400,500,900,1000}; string mp[13]; Solu

leetcode 12 整数转罗马数字 贪心

额,连着两个贪心? 这是局部最优问题:能用大“罗马数表示”就不会用小的. 先构造出所有基础罗马数,然后从大到小比较 因为比较的只有1000,900,...有限并有些麻烦,构造table  map<int,string> 然后,map默认安装按照key的值升序排序.. 想从大到小,用reverse_iterator class Solution { public: string intToRoman(int num) { map<int,string> calc = {{1000,&

LeetCode 12 Integer to Roman (整数转罗马数字)

题目链接: https://leetcode.com/problems/integer-to-roman/?tab=Description String M[] = {"", "M", "MM", "MMM”};//1000~3000String C[] = {"", "C", "CC", "CCC", "CD", "D&quo

12 Integer to Roman(int转罗马数字Medium)

题目意思:1-3999转罗马数字 思路:从大往小减 ps:这题有点蛋疼 1 class Solution { 2 public: 3 string intToRoman(int num) { 4 string a[]={"I","IV","V","IX","X","XL","L","XC","C","CD",

[LeetCode][12]Integer to Roman解析 int转罗马字符时间复杂度为常数的实现-Java实现

Q: Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. A: 俺是真不知道啥是roman,我去查了一下合着是罗马字体,这题目意思也很简单就是说我要输入一个数字可以保证是1-3999但是你要把这个阿拉伯数字转换成罗马数字. 首先我们要清楚罗马数字怎么表示的,罗马数字表示如下: 罗 马 数字共有七个,即I(1),V(5),X(10),L

[LeetCode]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 is written as, XII, which i

【算法】【LeetCode】整数转罗马数字

题目: 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 字符 数值I 1V 5X 10L 50C 100D 500M 1000例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 写做  XXVII, 即为 XX + V + II . 通常情况下,罗马数字中小的数字在大的数字的右边.但也存在特例,例如 4 不写做 IIII,而是 IV.数字 1 在数字 5 的左边,所表示的数等于大数 5 减小数 1 得到的数值 4 .同样