leetcode Problem12 Integer to Roman
2015-10-28 17:06
405 查看
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路:首先先把num按照个位十位百位千位拆分,然后对每一位上的数字按照roman to integer的对应表格,转化为对应的roman,然后就所有转化的再拼起来就是所求的结果。代码如下(已通过leetcode)
public class Solution {
public String intToRoman(int num) {
String[] str=new String[4];
String str2="";
if(num<1 || num>3999) return null;
int[] a=new int[]{0,0,0,0};
a[0]=num/1000;
if(a[0]!=0) num=num-a[0]*1000;
a[1]=num/100;
if(a[1]!=0) num=num-a[1]*100;
a[2]=num/10;
if(a[2]!=0) num=num-a[2]*10;
a[3]=num;
switch(a[3]) {
case 0: break;
case 1: str[3]="I";
break;
case 2: str[3]="II";
break;
case 3: str[3]="III";
break;
case 4: str[3]="IV";
break;
case 5: str[3]="V";
break;
case 6: str[3]="VI";
break;
case 7: str[3]="VII";
break;
case 8: str[3]="VIII";
break;
case 9: str[3]="IX";
break;
}
switch(a[2]) {
case 0: break;
case 1: str[2]="X";
break;
case 2: str[2]="XX";
break;
case 3: str[2]="XXX";
break;
case 4: str[2]="XL";
break;
case 5: str[2]="L";
break;
case 6: str[2]="LX";
break;
case 7: str[2]="LXX";
break;
case 8: str[2]="LXXX";
break;
case 9: str[2]="XC";
break;
}
switch(a[1]) {
case 0: break;
case 1: str[1]="C";
break;
case 2: str[1]="CC";
break;
case 3: str[1]="CCC";
break;
case 4: str[1]="CD";
break;
case 5: str[1]="D";
break;
case 6: str[1]="DC";
break;
case 7: str[1]="DCC";
break;
case 8: str[1]="DCCC";
break;
case 9: str[1]="CM";
break;
}
switch(a[0]) {
case 0: break;
case 1: str[0]="M";
break;
case 2: str[0]="MM";
break;
case 3: str[0]="MMM";
break;
default: break;
}
for(int i=0;i<4;i++) {
if(str[i]!=null)
str2+=str[i];
}
return str2;
}
}
Input is guaranteed to be within the range from 1 to 3999.
思路:首先先把num按照个位十位百位千位拆分,然后对每一位上的数字按照roman to integer的对应表格,转化为对应的roman,然后就所有转化的再拼起来就是所求的结果。代码如下(已通过leetcode)
public class Solution {
public String intToRoman(int num) {
String[] str=new String[4];
String str2="";
if(num<1 || num>3999) return null;
int[] a=new int[]{0,0,0,0};
a[0]=num/1000;
if(a[0]!=0) num=num-a[0]*1000;
a[1]=num/100;
if(a[1]!=0) num=num-a[1]*100;
a[2]=num/10;
if(a[2]!=0) num=num-a[2]*10;
a[3]=num;
switch(a[3]) {
case 0: break;
case 1: str[3]="I";
break;
case 2: str[3]="II";
break;
case 3: str[3]="III";
break;
case 4: str[3]="IV";
break;
case 5: str[3]="V";
break;
case 6: str[3]="VI";
break;
case 7: str[3]="VII";
break;
case 8: str[3]="VIII";
break;
case 9: str[3]="IX";
break;
}
switch(a[2]) {
case 0: break;
case 1: str[2]="X";
break;
case 2: str[2]="XX";
break;
case 3: str[2]="XXX";
break;
case 4: str[2]="XL";
break;
case 5: str[2]="L";
break;
case 6: str[2]="LX";
break;
case 7: str[2]="LXX";
break;
case 8: str[2]="LXXX";
break;
case 9: str[2]="XC";
break;
}
switch(a[1]) {
case 0: break;
case 1: str[1]="C";
break;
case 2: str[1]="CC";
break;
case 3: str[1]="CCC";
break;
case 4: str[1]="CD";
break;
case 5: str[1]="D";
break;
case 6: str[1]="DC";
break;
case 7: str[1]="DCC";
break;
case 8: str[1]="DCCC";
break;
case 9: str[1]="CM";
break;
}
switch(a[0]) {
case 0: break;
case 1: str[0]="M";
break;
case 2: str[0]="MM";
break;
case 3: str[0]="MMM";
break;
default: break;
}
for(int i=0;i<4;i++) {
if(str[i]!=null)
str2+=str[i];
}
return str2;
}
}
相关文章推荐
- 【UI视觉】100行代码实现微信底部渐变切换效果!!!
- 如何解决C++中用eof()多读一次
- jquery中ajax执行总是跑到error函数中
- 7.4 程序中的击中测试
- Linux编译wireshark,并支持lua插件
- 获取url中传递的参数值
- xcode工程内添加多个Target
- Ajax生成的动态标签无法被另一个javascript函数处理的解决办法
- Nginx基础入门之nginx部署安装
- usb读卡器
- uav10161
- Scripting.Dictionary字典对象
- Java Socket现实简单的HTTP服务
- SpringMVC中Controller跳转到另一个Controller方法
- java web 之 web.xml篇
- bzoj2071: [POI2004]JAS
- mongo shell启动配置文件.mongorc.js(三)
- C#中的装箱(Boxing)和拆箱(Unboxing)
- Android 各种Adapter
- mongo shell启动配置文件.mongorc.js(二)