热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

LeetCode题解#12IntegertoRoman

题目大意:给定数字,将其转化为罗马数字的形式罗马数字其实只有IVXLCDM这几种形式,其余均为组合的,去百度了解一下就ok。所以首先想到的就是,将个、十、百、千位的

题目大意:给定数字,将其转化为罗马数字的形式

 

罗马数字其实只有 I V X L C D M 这几种形式,其余均为组合的,去百度了解一下就ok。

 

所以首先想到的就是,将个、十、百、千位的数字构造出来,然后直接用就好了。

要特别注意为整10,整100、1000的情况。

 

String [] ge ={"I","II","III","IV","V","VI","VII","VIII","IX"};

String [] shi = {"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};

String [] bai = {"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};

String [] qian = {"M","MM","MMM"};


public String intToRoman(int num) {


String result = "";
String g = "";
String s = "";
String b = "";
String q = "";



if(num%10>0){
g = ge[num%10-1];
num/=10;}else{

g="";
num/=10;
}



if(num>0){

if(num%10>0){
s = shi[num%10-1];
num/=10;}else{

s="";
num/=10;
}

if(num>0){

if(num%10>0){
b = bai[num%10-1];
num/=10;}else{

b="";
num/=10;
}

if(num>0){

q=qian[num%10-1];
num/=10;

return q+b+s+g;


}
else{

return b+s+g;

}


}
else{

return s+g;

}



}
else
return g;


}

 

更精简的代码(将整10、100、1000的情况整合到数组里面)

string intToRoman(int num) {

string roman[4][10] = {

{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},

{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},

{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},

{"", "M", "MM", "MMM"}

};

string ret = "";

int digit = 0;

while (num)

{ret = roman[digit++][num % 10] + ret, num /= 10; return ret; }


推荐阅读
author-avatar
我是王健值得信赖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有