题目:
Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
思路:
1.题目要求将输入的正数用罗马数字表示,由于题目设定给定的数小于4000,那么该问题就比较容易解决;
2.设立4个string数组,分别存储个位到千位的罗马数字;
3.函数中先对int的千位进行处理,再对百位进行处理(x/100),用获得的数与相应string数组中的值做比对,依次类推,获得该为的罗马数字,直到处理完个位;
4.思路简单,可直接看代码。
代码:
class Solution{
public:
string intToRoman(int num){
string bit[9]={"I","II","III","IV","V","VI","VII","VIII","IX"};
string dec[9]={"X","XX","XXX","XL","L","LX","LXX","LXXX","XC"};
string hun[9]={"C","CC","CCC","CD","D","DC","DCC","DCCC","CM"};
string kbit="M";
int k=num/1000;
string result="";
for(int i=0;i!=k;++i)
result += kbit;
num=num%1000;
int h=num/100;
if(h>0)
result+=hun[h-1];
num=num%100;
int d=num/10;
if(d>0)
result+=dec[d-1];
num=num%10;
int b=num/1;
if(b>0)
result+=bit[b-1];
return result;
}
};