LeetCode上Roman to Integer的C++代码

来源:互联网 发布:影楼设计软件 编辑:程序博客网 时间:2024/06/08 09:39

首先我们需要了解罗马数字的表示方法,才能够设计罗马数字转化为整数的算法。罗马数字介绍可以详见百度百科或者维基百科等等。

可以简化如下

IVXLCDM1510501005001000

根据罗马数字表示规则,我们可以初始化一个couter,然后一遍遍历,得出答案

代码如下

class Solution {public:    int romanToInt(string s) {int sSize = s.size();int couter = 0;int i;string temp;for(i = 0;i < sSize;i ++){            if(s.substr(i,1) == "I"){                if(s.substr(i+1, 1) == "I" || (i+1) == sSize)                    couter ++;                else                    couter --;            }            else if(s.substr(i, 1) == "V")                couter += 5;            else if(s.substr(i, 1) == "X"){                if(s.substr(i+1, 1) == "L" || s.substr(i+1, 1) == "C")                    couter -= 10;                else                    couter += 10;            }            else if(s.substr(i, 1) == "L")                couter += 50;            else if(s.substr(i, 1) == "C"){if(s.substr(i+1,1) == "D" || s.substr(i+1,1) == "M")couter -= 100;elsecouter += 100;            }            else if(s.substr(i, 1) == "D")                couter += 500;            else if(s.substr(i, 1) == "M")                couter += 1000;}return couter;    }};

本来想用swich case语句,这样思想是相同的,代码量可以少一点。但在C++里面,switch语句,后面不能用string类型的变量,但可以通过hash表来解决,我就比较暴力的把switch写成了if else。


0 0
原创粉丝点击