13. 罗马数字转整数



int romanToInt(char * s){
  //  int a[13] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000 };
    int i = 0, k, sum = 0;
    while (s[i]) {
        switch (s[i]) {
            case 'I': if (s[i+1] == 'V') {
                            k = 4;
                            i++;
                        }
                      else if (s[i+1] == 'X') {
                            k = 9;
                            i++;
                      }
                      else 
                        k = 1;
                      break;
                
            case 'V':   k = 5;    break;
                
            case 'X': if (s[i+1] =='L') {
                            k = 40;
                            i++;
                      }
                      else if (s[i+1] == 'C') {
                            k = 90;
                            i++;
                      }
                      else
                        k = 10;   break;
                
            case 'L':   k = 50;   break;
                
            case 'C': if (s[i+1] == 'D') {              
                            k = 400;  
                            i++;
                      }
                      else if (s[i+1] == 'M') {
                            k = 900; 
                            i++;
                      }
                      else
                        k = 100; break;
                
            case 'D':   k = 500; break;
                
            case 'M':   k = 1000; break;
        }
        sum += k;
        i++;
    }
    return sum;
}
/* !< output */
输入
"III"
"MCMXCIV"
输出
3
1994
预期结果
3
1994
posted @ 2019-09-10 21:00  电院院长  阅读(154)  评论(0编辑  收藏  举报