Leetcode -- Integer to Roman
来源:互联网 发布:企查查软件下载 编辑:程序博客网 时间:2024/06/05 06:03
题目:
Given an integer, convert it to a roman numeral.Input is guaranteed to be within the range from 1 to 3999.
分析:罗马数字,转到阿拉伯数字是相当有规律的。比如9 -- IX, 90 -- XC, 99 -- XCIX
思路:map形式,将所有特殊的都存储起来,然后在直接通过key获取相应的值。
代码:
string intToRoman(int num) { map <int, map<int, string>>map1; map1[10][1] = "I"; map1[10][2] = "II"; map1[10][3] = "III"; map1[10][4] = "IV"; map1[10][5] = "V"; map1[10][6] = "VI"; map1[10][7] = "VII"; map1[10][8] = "VIII"; map1[10][9] = "IX"; map1[100][1] = "X"; map1[100][2] = "XX"; map1[100][3] = "XXX"; map1[100][4] = "XL"; map1[100][5] = "L"; map1[100][6] = "LX"; map1[100][7] = "LXX"; map1[100][8] = "LXXX"; map1[100][9] = "XC"; map1[1000][1] = "C"; map1[1000][2] = "CC"; map1[1000][3] = "CCC"; map1[1000][4] = "CD"; map1[1000][5] = "D"; map1[1000][6] = "DC"; map1[1000][7] = "DCC"; map1[1000][8] = "DCCC"; map1[1000][9] = "CM"; map1[10000][1] ="M"; map1[10000][2] = "MM"; map1[10000][3] = "MMM"; int a = 10; int b; string s = ""; while(num) { b = num%10; if(b != 0) { s = map1[a][b] + s; } num = num/10; a = a * 10; } return s; }
更为简单的解法(网上抄的-_-):
- 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" };
- StringBuilder result = new StringBuilder();
- for (int i = 0; i < values.length; i++) {
- while (number >= values[i]) {
- number -= values[i];
- result.append(numerals[i]);
- }
- }
- return result.toString();
- }
0 0
- LeetCode Roman to Integer && Integer to Roman
- 【leetcode】Roman to Integer | Integer to Roman
- Leetcode - "Roman to Integer" & "Integer to Roman"
- LeetCode:Roman to Integer,Integer to Roman
- LeetCode Integer to Roman & Roman to Integer
- leetcode - roman to integer & integer to roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- LeetCode: Integer to Roman
- LeetCode : Roman to Integer
- [Leetcode] Roman to Integer
- [Leetcode] Integer to Roman
- Leetcode: Integer to Roman
- Leetcode: Roman to Integer
- LeetCode Integer to Roman
- 【leetcode】Roman to Integer
- ssh登陆提示"Host key verification failed."的解决方法
- 循环小数 南阳oj329 【KMP next数组的应用】
- 大学生投注“互联网+”营销QQ推动传统企业转型
- macox下编译snappy静态库
- [笔记][Java7并发编程实战手册]2.4在同步代码中使用条件-生产者与消费者
- Leetcode -- Integer to Roman
- HTML5的canvas实现一个球的左右移动
- 算法竞赛入门经典(第二版) 习题3-5 谜题(Puzzle) UVa227 Finals1993
- Spring AOP(2)动态代理
- JS实现动态添加图片上传,多个单图添加
- UVA 11624
- ZOJ 题目3228 Searching the String(AC自动机,子川匹配个数)
- hdoj-1686 Oulipo
- 9.9递归和动态规划(一)——小孩上楼梯的方式的种类