12 整数转罗马数字
模拟 提高一次AC成功率 细心
string intToRoman(int num) {
string res;
while(num>=1000)num-=1000,res+='M';
if(num>=900)num-=900,res+="CM";
if(num>=500)num-=500,res+="D";
if(num>=400)num-=400,res+="CD";
while(num>=100)num-=100,res+="C";
if(num>=90)num-=90,res+="XC";
if(num>=50)num-=50,res+="L";
if(num>=40)num-=40,res+="XL";
while(num>=10)num-=10,res+="X";
if(num>=9)num-=9,res+="IX";
if(num>=5)num-=5,res+="V";
if(num>=4)num-=4,res+="IV";
while(num>=1)num--,res+="I";
return res;
}
13 上一道题意的reverse
int romanToInt(string s) {
int n=s.size();
int res=0;
for(int i=n-1;i>=0;i--){
if(s[i]=='I')res++;
if(s[i]=='V'){
res+=5;
if(i&&s[i-1]=='I'){
i--;
res--;
}
}
if(s[i]=='X'){
res+=10;
if(i&&s[i-1]=='I'){
i--;
res--;
}
}
if(s[i]=='L'){
res+=50;
if(i&&s[i-1]=='X'){
i--;
res-=10;
}
}
if(s[i]=='C'){
res+=100;
if(i&&s[i-1]=='X'){
i--;
res-=10;
}
}
if(s[i]=='D'){
res+=500;
if(i&&s[i-1]=='C'){
i--;
res-=100;
}
}
if(s[i]=='M'){
res+=1000;
if(i&&s[i-1]=='C'){
i--;
res-=100;
}
}
}
return res;
}