Question12–Integer to Roman
题目描述:将一个1到3999的int数据转换为罗马数字表示
罗马数字
I(1), V(5), X(10), L(50), C(100), D(500), M(1000)
算法
将每个位上的数用罗马数字表示出来,存在一个二维数组里面,然后将int数据按位拆开,并将相应的罗马数字串接起来
Code
string intToRoman(int num) {
string roman;
string ch[][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"}};
for(int i=3; i>-1; i--){
int x=num/pow(10,i);
roman.append(ch[i][x%10]);
}
return roman;
}
时间复杂度
O(1)