LeetCode 12 - Integer to Roman
2015-06-10 14:30
204 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/yuanhisn/article/details/84723719
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
public String intToRoman(int num) { StringBuilder sb = new StringBuilder(); Map<Integer, String> map = new HashMap<Integer, String>(); map.put(1, "I"); map.put(5, "V"); map.put(10, "X"); map.put(50, "L"); map.put(100, "C"); map.put(500, "D"); map.put(1000, "M"); int base = 1000; while(base >= 1) { int n = num/base; if(n==4) { sb.append(map.get(base)).append(map.get(base*5)); } else if(n==9) { sb.append(map.get(base)).append(map.get(base*10)); } else { if(n>=5) { sb.append(map.get(base*5)); n -= 5; } for(int i=0; i<n; i++) { sb.append(map.get(base)); } } num %= base; base /= 10; } return sb.toString(); }
C++代码更简洁一些:
string intToRoman(int num) { unordered_map<int, char> map = {{1,'I'},{5,'V'},{10,'X'},{50,'L'},{100,'C'},{500,'D'},{1000, 'M'}}; string res; vector<int> list = {1000, 100, 10, 1}; for(auto n:list) { int d = num/n; num %= n; if(d == 0) continue; if(d < 4) { res.append(d, map ); } else if(d == 4) { res += map ; res += map[n*5]; } else if(d < 9) { res += map[n*5]; if(d > 5) res.append(d-5, map ); } else if(d == 9) { res += map ; res += map[n*10]; } } return res; }
相关文章推荐
- leetcode 12.IntegertoRoman(整形转罗马数字)
- LeetCode-12:Integer to Roman
- LeetCode(12)--Integer to Roman
- [LeetCode] 12.Integer to Roman
- LeetCode 12. Integer to Roman
- leetcode-12-integer to roman
- LeetCode 12 Integer to Roman (整数转罗马数字)
- #12 LeetCode——Integer to Roman
- leetCode 12.Integer to Roman (整数转罗马数字) 解题思路和方法
- [Leetcode] 12. Integer to Roman
- leetcode 12. Integer to Roman
- LeetCode-12-Integer to Roman(哈希)-Medium
- [leetcode]12. Integer to Roman
- LeetCode 12. Integer to Roman
- leetcode12 Integer to Roman
- [leetcode] 【字符串】 12. Integer to Roman
- Java [leetcode 12] Integer to Roman
- [LeetCode] 12. Integer to Roman
- leetcode 12 Integer to Roman
- <LeetCode OJ> 13 / 12 Roman to Integer & Integer to Roman