题目:
思路:
主要是用数组每一项对应一种情况比傻里傻气地写if,else强多了。
代码:
//简洁
class Solution {
public:
string intToRoman(int num) {
int values[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
string reps[]={"M","CM","D","CD","C","XC","L","XL","X","IX","V","IV","I"};
string res;
for(int i=0; i<13; i++){
while(num>=values[i]){
num -= values[i];
res += reps[i];
}
}
return res;
}
};
//复杂
class Solution {
public:
string intToRoman(int num) {
int remain=num;
int temp=0;
int count=0;
string res="";
//vector<string> resVec;
while(remain>0)
{
temp=remain;
if(remain>=1000)
{
count=temp/1000;
remain=remain-count*1000;
for(int i=0;i<count;i++)
res += "M";
//resVec.push_back("M");
}
else if(remain>=900)
{
count=temp/900;
remain=remain-count*900;
for(int i=0;i<count;i++)
res += "CM";
//resVec.push_back("CM");
}
else if(remain>=500)
{
count=temp/500;
remain=remain-count*500;
for(int i=0;i<count;i++)
res += "D";
//resVec.push_back("D");
}
else if(remain>=400)
{
count=temp/400;
remain=remain-count*400;
for(int i=0;i<count;i++)
res += "CD";
//resVec.push_back("CD");
}
else if(remain>=100)
{
count=temp/100;
remain=remain-count*100;
for(int i=0;i<count;i++)
res += "C";
//resVec.push_back("C");
}
else if(remain>=90)
{
count=temp/90;
remain=remain-count*90;
for(int i=0;i<count;i++)
res += "XC";
//resVec.push_back("XC");
}
else if(remain>=50)
{
count=temp/50;
remain=remain-count*50;
for(int i=0;i<count;i++)
res += "L";
//resVec.push_back("L");
}
else if(remain>=40)
{
count=temp/40;
remain=remain-count*40;
for(int i=0;i<count;i++)
res += "XL";
//resVec.push_back("XL");
}
else if(remain>=10)
{
count=temp/10;
remain=remain-count*10;
for(int i=0;i<count;i++)
res += "X";
//resVec.push_back("X");
}
else if(remain>=9)
{
count=temp/9;
remain=remain-count*9;
for(int i=0;i<count;i++)
res += "IX";
//resVec.push_back("IX");
}
else if(remain>=5)
{
count=temp/5;
remain=remain-count*5;
for(int i=0;i<count;i++)
res += "V";
//resVec.push_back("V");
}
else if(remain>=4)
{
count=temp/4;
remain=remain-count*4;
for(int i=0;i<count;i++)
res += "IV";
//resVec.push_back("IV");
}
else if(remain>=1)
{
count=temp/1;
remain=remain-count*1;
for(int i=0;i<count;i++)
res += "I";
//resVec.push_back("I");
}
}
/*string res="";
for(int j=0;j<resVec.size();j++)
{
res=res+resVec[j];
}*/
return res;
}
};