Integer to Roman
来源:互联网 发布:数据挖掘 预测算法 编辑:程序博客网 时间:2024/05/22 03:16
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
这道题直接上来硬写的,感觉有点没动脑筋。想起当时用java课上一道关于扑克牌的课后作业,应该写的灵活些。像本题,如果还需要写出后续的数字这种写法就不妥当了。我想到的一个办法是:在个位,十位,百位使用一个for循环,因为他们的逻辑是一模一样的,除了字母不同,那么便可以用一个二位数组存好这些字母,按规则打印即可。
以下是不聪明的写法:
package leetcode;public class Int2Roman {// I V X L C D M// 1 5 10 50 100 500 1000public static void main(String[] args) {Int2Roman int2r = new Int2Roman();int2r.intToRoman(2500);System.out.println();int2r.intToRoman(735);System.out.println();int2r.intToRoman(14);}public String intToRoman(int num) {// 1-3999int temp = num;int split[] = new int[4];int point = 0;// 反序存这个数字while (temp > 0) {split[point] = temp % 10;temp = temp / 10;point++;}/* * for (int i : split) { System.out.println(i); } */String res = "";// 千位if (split[3] != 0) {// 如果是减法// 如果是加法 1-3for (int j = 0; j < split[3]; j++) {res += "M";}}//百位if (split[2] != 0) {// 如果是加法 1-3if(split[2]<=3){for (int j = 0; j < split[2]; j++) {res += "C";}}// 如果是加法 5-8if(split[2]>=5 && split[2]<=8){res+="D";for(int j=split[2]-5;j>0;j--)res+="C";}// 如果是减法if(split[2]==9){res+="CM";}if(split[2]==4){res+="CD";}}//十位if (split[1] != 0) {// 如果是减法// 如果是加法 1-3if(split[1]<=3){for (int j = 0; j < split[1]; j++) {res += "X";}}// 如果是加法 5-8if(split[1]>=5 && split[1]<=8){res+="L";for(int j=split[1]-5;j>0;j--)res+="X";}if(split[1]==9){res+="XC";}if(split[1]==4){res+="XL";}}//个位if (split[0] != 0) {// 如果是减法// 如果是加法 1-3if(split[0]<=3){for (int j = 0; j < split[0]; j++) {res += "I";}}// 如果是加法 5-8if(split[0]>=5 && split[0]<=8){res+="V";for(int j=split[0]-5;j>0;j--)res+="I";}if(split[0]==9){res+="IX";}if(split[0]==4){res+="IV";}}System.out.println("res:" + res);return res;}}
0 0
- Integer to Roman & Roman to Integer
- Integer to Roman & Roman to Integer
- 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
- Integer to Roman and Roman to Integer
- LeetCode Integer to Roman & Roman to Integer
- Roman to Integer/Integer to Roman
- leetcode - roman to integer & integer to roman
- "Roman to Integer" and "Integer to Roman"
- Roman to Integer &&Integer to Roman
- Roman to Integer and Integer to Roman
- Roman to Integer/Integer to Roman
- LeetCode:Roman to Integer
- LeetCode: Integer to Roman
- LeetCode: Roman to Integer
- LeetCode Integer to Roman
- 纪录: INNER JOIN,LEFT JOIN 之解惑
- 结构体3 使用函数赋值
- 《IOS编程》深入学习:键值编码 学习手记
- Xcode常用快捷键
- 2015年07月21日第12天笔记
- Integer to Roman
- T-SQL 查找重复记录
- 多层的if循环
- oj水题
- oracle 回滚段学习
- ZOJ 3793 First Digit(数学)
- uva 12235(dp)
- Java 同步机制知识点
- 算法导论 第二十五章:每对顶点间的最短路径