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;
    }