LeetCode 13:Roman to Integer

来源:互联网 发布:网龙网络 编辑:程序博客网 时间:2024/06/03 07:39

这题其实很简单,知道罗马数字的规则就可以。从左往右遍历即可。

class Solution {public:    int romanToInt(string s) {        //I(1),V(5),X(10),L(50),C(100),D(500),M(1000)        //在一个较大的罗马数字的右边记上一个较小的罗马数字,表示大数字加小数字。
        //在一个较大的数字的左边记上一个较小的罗马数字,表示大数字减小数字。但是,左减不能跨越等级。        int a=0,b=0,value=0;        for(int i=0;i<s.size();i++){            a=getValue(s[i]);            if(i!=s.size()-1) b=getValue(s[i+1]);            else b=0;            if(a>=b){                value+=a;            }else{                value-=a;            }        }        return value;    }        int getValue(char c){        switch(c){            case 'I':return 1;break;            case 'V':return 5;break;            case 'X':return 10;break;            case 'L':return 50;break;            case 'C':return 100;break;            case 'D':return 500;break;            case 'M':return 1000;break;        }    }};


0 0
原创粉丝点击