LeetCode上Roman to Integer的C++代码

    xiaoxiao2021-03-25  64

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

    可以简化如下

    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; else couter += 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。

    转载请注明原文地址: https://ju.6miu.com/read-37027.html

    最新回复(0)