leetcode 12. Integer to Roman
来源:互联网 发布:金兰营销软件 编辑:程序博客网 时间:2024/06/04 23:36
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
1. 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;2. 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
3.小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
4. 正常使用时、连写的数字重复不得超过三次;
个位数举例
Ⅰ-1、Ⅱ-2、Ⅲ-3、Ⅳ-4、Ⅴ-5、Ⅵ-6、Ⅶ-7、Ⅷ-8、Ⅸ-9
十位数举例
Ⅹ-10、Ⅺ-11、Ⅻ-12、XIII-13、XIV-14、XV-15、XVI-16、XVII-17、XVIII-18、XIX-19、XX-20、XXI-21、XXII-22、XXIX-29、XXX-30、XXXIV-34、XXXV-35、XXXIX-39、XL-40、L-50、LI-51、LV-55、LX-60、LXV-65、LXXX-80、XC-90、XCIII-93、XCV-95、XCVIII-98、XCIX-99
百位数举例
C-100、CC-200、CCC-300、CD-400、D-500、DC-600、DCC-700、DCCC-800、CM-900、CMXCIX-999
千位数举例
M-1000、MC-1100、MCD-1400、MD-1500、MDC-1600、MDCLXVI-1666、MDCCCLXXXVIII-1888、MDCCCXCIX-1899、MCM-1900、MCMLXXVI-1976、MCMLXXXIV-1984、MCMXC-1990、MM-2000、MMMCMXCIX-3999
思路就是将千位、百位、十位、个位分解开来:
package leetcode;public class Integer_to_Roman_12 {public String intToRoman(int num) {String M[] = {"", "M", "MM", "MMM"}; String C[] = {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}; String X[] = {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}; String I[] = {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}; int qian=num/1000;//千位上的数 int bai=(num%1000)/100;//百位上的数 int shi=(num%100)/10;//十位上的数 int ge=num%10;//个位上的数 String result=M[qian]+C[bai]+X[shi]+I[ge];return result;}public static void main(String[] args) {// TODO Auto-generated method stubInteger_to_Roman_12 i=new Integer_to_Roman_12();System.out.println(i.intToRoman(3999));}}还有大神这样做,也是很OK的。从大到小排序,遇大填大。
public String intToRoman(int num) { int[] values = {1000,900,500,400,100,90,50,40,10,9,5,4,1}; String[] strs = {"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"}; StringBuilder sb = new StringBuilder(); for(int i=0;i<values.length;i++) { while(num >= values[i]) { num -= values[i]; sb.append(strs[i]); } } return sb.toString();}
阅读全文
0 0
- 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
- 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
- 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
- CentOS7下搭建Ceph(二)
- LeetCode--Greedy
- 解题报告应该怎么写
- *p=a与*p=&a有什么区别
- Dojo Query 详解
- leetcode 12. Integer to Roman
- Dubbo系列-5.服务的发布
- VLC架构剖析
- 【DOS网络命令】-ping的用法
- java.sql.SQLException
- SAP 取月度期初库存和月度期末库存(历史库存)-mard和mardh的区别
- git 合并本地两个分支
- 通过jQuery Ajax使用FormData对象上传文件
- 挑战程序竞赛系列(25):3.5最大权闭合图