lc12-整数转罗马数字,罗马转整数

#include
#include
#include
#include
#include
using namespace std;
string intToRoman(int num){//数字转罗马
    int base[]={1000,900,500,400,100,90,50,40,10,9,5,4,1};
    string str[]={ "M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX",
                "V", "IV", "I" };
    string roman="";
    int i=0;
    while(num!=0){
        if(num>=base[i]){
            num-=base[i];
            roman+=str[i];
            
        }
        else{
            i++;
        }
    }
    return roman;
}
int RomanToint(string str){
    int n=0;
    
    for(int i=0;i=0){
        n-=2;
    }
    int b=str.find("IX");
    if(b>=0){
        n-=2;
    }
    int f=str.find("XL");
    if(f>=0){
        n-=20;
    }
    int c=str.find("XC");
    if(c>=0){
        n-=20;
    }
    int d=str.find("CD");
    if(d>=0){
        n-=200;
    }
    int e=str.find("CM");
    if(e>=0){
        n-=200;
    }
    
    return n;
}
void main(){
    //int num;
//  scanf("%d",&num);
//  string roman=intToRoman(num);
    
//  printf("%s",roman.c_str());//printf输出string类型需要调用c_str方法
    string str;
    cin>>str;//不能使用scanf输入,会使str.length()一直为0
    //scanf("%s",str);
    int t=RomanToint(str);
    printf("%d",t);
}

你可能感兴趣的:(lc12-整数转罗马数字,罗马转整数)