看上去有点复杂,但本质在于当前的数字若是小于之后一位的数字,则这一位的数字应当减去,如果不是,则正常相加。搞清楚这一问题后就比较简单了。贴代码
class Solution { public: int romanToInt(string s) { int sum = 0; for(int i = 0 ; i < s.size()-1 ; i++) { int pre = returnvalue(s[i]); if(returnvalue(s[i+1])>pre) //代表这个数需减去 sum-=pre; else sum+=pre; } sum+=returnvalue(s[s.size()-1]); return sum; } int returnvalue(char a) { switch(a) { 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; } return 0; } };
原文:https://www.cnblogs.com/zhaohhhh/p/14585286.html