Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.

int romanToInt(char* s) {
    int sum=0;
    int PriorityArray[7]={0,1,2,3,4,5,6};
    char wordArray[7]={'I','V','X','L','C','D','M'};
    int numberArray[7]={1,5,10,50,100,500,1000}; 
    int sortArray[99]={0};
    int bits=0;
    while(*s){
        for(int i=0;i<7;i++){
            if(*s==wordArray[i]){
                sortArray[bits]=PriorityArray[i];
                //printf("sortArray[%d]=%d\n",bits,PriorityArray[i]);
                break;
            }
        }
        bits++;
        s++;
    }
    for(int i=0;i<bits-1;i++){
        if(sortArray[i]<sortArray[i+1])
            sum-=numberArray[sortArray[i]];
        else
            sum+=numberArray[sortArray[i]];
        //printf("sum=%d\n",sum);
    }
    sum+=numberArray[sortArray[bits-1]];
        //printf("last sum=%d\n",sum\);
    return sum;
}

results matching ""

    No results matching ""