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 @   电院院长  阅读(157)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示