2020年6月10日 星期三

week 16 LeetCode Problem 13

解題關鍵在於觀察羅馬數字的計算邏輯,歡迎分享更短的寫法~

PS: 剛剛更換網頁字型,文章被吃掉好幾次,嗚嗚。゚ヽ(゚´Д`)ノ゚。

int romanToInt(char * s){
    int sum=0,a=0,b=0,input,last_input=0,flag;
    size_t len = strlen(s);
    for(int i=len-1;i>=0;i--){
        if(s[i]=='I') input=1;
        else if(s[i]=='V') input=5;
        else if(s[i]=='X') input=10;
        else if(s[i]=='L') input=50;
        else if(s[i]=='C') input=100;
        else if(s[i]=='D') input=500;
        else if(s[i]=='M') input=1000;
        if(last_input!=0){
            if(input==last_input){
                sum=sum+input;
            }else if(input>last_input){
                sum=sum+input;
            }else if(input<last_input){
                sum=sum-input;
            }
        }else{
            sum=sum+input;
        }
        last_input=input;
    }
    return sum;
}

沒有留言:

張貼留言

 2025 MTK 韌體工程師 上機考心得  前言: 以前, 我覺得寫前後端的人才是真正的寫程式, 很羨慕那些大神 直到這次準備, 我才發現靠杯, 原來寫底層的程式也那麼硬派, XOR 一些奇奇怪怪的加速運算操作, 剛看到真的是無法想像, 有夠虧賊!   1. C/C++ Pro...