`
king_tt
  • 浏览: 2108207 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

【leetcode】Integer to Roman

 
阅读更多

Question :

Given an integer, convert it to a roman numeral.

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

Anwser 1 :

class Solution {
public:
    string intToRoman(int num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function    
        string res;
        
        string symbol[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
        int value[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
        
	    int i = 0;
	    while(num != 0){
		    if(num >= value[i]){    // minus largest number
			    num -= value[i];
		    	res += symbol[i];
		    } else {
    	        i++;   
		    }
	    }

	    return res;
    }
};


Anwser 2 :

class Solution {
public:
    string intToRoman(int num) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function    
        char symbol[7] = {'I', 'V', 'X', 'L', 'C', 'D', 'M'};
        string res = "";
        
        int scale = 1000;
        for (int i = 6; i >= 0; i -= 2)
        {
            int digit = num / scale;
            num2roman(digit, res, symbol + i);
            num %= scale;
            scale /= 10;
        }
        
        return res;
    }
    
    void num2roman(int num, string& res, char symbols[])
    {
        if (num == 0)
            return;
        if (num <= 3)
            res.append(num, symbols[0]);
        else if (num == 4)
        {
            res.append(1, symbols[0]);
            res.append(1, symbols[1]);
        }
        else if (num <= 8)
        {
            res.append(1, symbols[1]);
            res.append(num - 5, symbols[0]);
        }
        else
        {
            res.append(1, symbols[0]);
            res.append(1, symbols[2]);
        }
    }
};


分享到:
评论

相关推荐

    LeetCode Roman to Integer解决方案

    LeetCode Roman to Integer解决方案

    Roman to Integer完整代码

    leetcode上Roman to Integer的完整C++代码,已被accepted

    leetcode-integer_to_roman

    leetcode-integer_to_roman

    qycl50224#leetcode#13. 罗马数字转整数 Roman to Integer1

    13. 罗马数字转整数 Roman to Integer用哈希存储映射字符---&gt;对映的值对字符串的字符挨个判断,考虑下一个字符如果下一个字符大于当前字符,su

    LeetCode最全代码

    462 | [Minimum Moves to Equal Array Elements II](https://leetcode.com/problems/minimum-moves-to-equal-array-elements-ii/) | [C++](./C++/minimum-moves-to-equal-array-elements-ii.cpp) [Python](./Python/...

    javalruleetcode-LeetCode:LeetCode算法问题

    java lru leetcode Fighting for a job! 记录找工作期间搬运的题,全部使用Java实现,本人C++鶸 1 ...LeetCode ...LeetCode ...LeetCode ...LeetCode ...LeetCode ...LeetCode ...LeetCode ...LeetCode ...Integer LeetCode 6 Zi

    leetcode2sumc-leetcode:JavaScript版本leetcode中文版代码

    leetcode 2 sum c leetcode 力扣(Leetcode)编程题,JavaScript版本。 编号 中文题目 英文题目 题目描述 JavaScript 难度 1 Two Sum 简单 2 Add Two Numbers 中等 3 Longest Substring Without Repeating... 中等 5...

    Leetcode回文串拼接-leetcode_note:用于记录leetcode题目的解析

    Leetcode回文串拼接 leetcode_node 题解 该项目主要用于基于Leetcode的刷题记录,与日常学习,对Leetcode上的题目按照解题方法进行分明别类的整理。 题目列表 1.Two Sum 2.Add Two Numbers 3.Longest Substring ...

    lrucacheleetcode-leetcode:leetcode

    lru缓存leetcode leetcode 1. Two Sum 2. Add Two Numbers 3. Longest Substring Without Repeating Characters 4. Median of Two Sorted Arrays 5. Longest Palindromic Substring 7. Reverse Integer 9. ...

    leetcode338-LeetCode:LeetCode刷题总结

    LeetCode刷题总结 1.Two Sum 2.Add Two Numbers 3.Longest Substring Without Repeating Characters 4.Median of Two Sorted Arrays 5.Longest Palindromic Substring (Manacher算法待完成) 6.ZigZag Conversion 7....

    leetcode双人赛-LeetCode:力扣笔记

    leetcode双人赛LeetCode 编号 题目 难度 题型 备注 Two Sum 简单 Add Two Numbers 中等 链结串列 重要 Longest Substring Without Repeating Characters 中等 字串 重要 Median of Two Sorted Arrays 困难 数学 ...

    leetcode中国-leetcode:leetcode刷题

    leetcode中国 我自己的leetcode刷题记录 ###[20150920] Valid Palindrome Implement strStr() String to Integer (atoi) addBinary longestPalindrome maximal rectangle :dp问题,较难 largestRectangleArea 求直方...

    leetcode530-algorithm:算法

    leetcode 530 ** LeetCode 题目更新 ** 用来记录业余时间所做的算法题目,保持对于数据结构的熟悉。 ** Leetcode 题目列表 005 Longest Palindromic Substring 006 ZigZag Conversion 007 Reverse Integer 008 ...

    leetcode题库-LeetCode:力码

    leetcode题库 LeetCode 题解合集 本仓库展示了LeetCode题库中部分题目的解法(持续更新),所有代码均采用C++编写并配有输入输出样例 代码清单如下: 序号 题目 程序源码 1 两数之和 Two Sum.cpp 2 两数相加 Add Two...

    分割数组求最大差值leetcode-Leetcode-Road:LeetCode刷题记录

    分割数组求最大差值leetcode LeetCode 学习之路 记录自己完成LeetCode的代码和结果。 序号 中文名称 英文名称 通过率 难度 1 Two Sum 47.0% 简单 2 Add Two Numbers 36.0% 中等 3 Longest Substring Without ...

    leetcode卡-LeetCode:LeetCode题解

    leetcode卡 LeetCode LeetCode题解 目录 字符串问题 ID Title C++ 难度 备注 0008 String to Integer(atoi) :star: :star: :star: 注意细节,溢出 ---- strlen :star: :star: :star: const char,size_t类型 ---- ...

    leetcodepython001-algorithm:leetcode问题(cpp、java、python),书籍破解_the_coding

    leetcode Python 001 leetcode的算法问题 这是我的解决方案,用 cpp 、 java 和 python 编写 #LeetCode 解决的问题: 001. Two Sum 002. Add Two Numbers 003. Longest Substring Without Repeating Characters4. ...

    leetcode跳跃-LeCode:乐科

    leetcode 跳跃 LeetCode Solved by Python easy/middle/hard:15/36/5 1. Two Sum 两数之和 2. Add Two Numbers 两数相加 3. Longest Substring Without Repeating Characters 无重复字符的最长子串 4. Median of ...

    程序员面试宝典LeetCode刷题手册

    13. Roman to Integer 15. 3Sum 16. 3Sum Closest 17. Letter Combinations of a Phone Number 18. 4Sum 19. Remove Nth Node From End of List 20. Valid Parentheses 21. Merge Two Sorted Lists 22. Generate ...

    lrucacheleetcode-LeetCode:本库有各种在线编码平台几个问题的解决方案

    lru缓存leetcode 力码 涵盖了 Geeks for Geeks 和 Leet Code 的各种问题。...Integer (249_Easy) LeetCode 14 : 最长公共前缀 (250_Easy) LeetCode 15 : 3Sum (271_Medium) LeetCode 17 : 电话号码的

Global site tag (gtag.js) - Google Analytics