1. 程式人生 > >13.C語言/羅馬數字轉整數

13.C語言/羅馬數字轉整數

先上題目:


思路:這道題比較容易,關鍵在於I,X,C的運算會受後一位(右邊一位)數字的影響。

int romanToInt(char* s) {
    int i,result=0;
    for(i=0;i<strlen(s);i++){
        
        if(s[i]=='I')
            if(s[i+1]=='V'||s[i+1]=='X')
            s[i]='O';
        
        if(s[i]=='X')
            if(s[i+1]=='L'||s[i+1]=='C')
            s[i]='P';
        
        if(s[i]=='C')
            if(s[i+1]=='D'||s[i+1]=='M')
            s[i]='Q';
                 
        switch(s[i])
        {
            case 'I':
                result=result+1;
                break;
            case 'V':
                result=result+5;
                break;
            case 'X':
                result=result+10;
                break;
            case 'L':
                result=result+50;
                break;
            case 'C':
                result=result+100;
                break;
            case 'D':
                result=result+500;
                break;
            case 'M':
                result=result+1000;
                break;
            case 'O':
                result=result-1;
                break;
            case 'P':
                result=result-10;
                break;
            case 'Q':
                result=result-100;
                break;
            default:
                break;
        }
    }
        return result;
}

第一次用了最暴力的做法,與if-else if-else巢狀為同種做法。感覺太丟臉了,我大概是來湊字數的,後續更新更高效做法,努力努力