本文共 681 字,大约阅读时间需要 2 分钟。
题目:
解答:
罗马数字转化为整数时不需要考虑太多的复杂规则,根据罗马数字的书写规则,当前的字母代表的数比下一个数大或相等,那么就加上该数,否则就减去该数。
代码:
class Solution { public: int romanToInt(string s) { mapri; ri.insert(pair ('I', 1)); ri.insert(pair ('V', 5)); ri.insert(pair ('X', 10)); ri.insert(pair ('L', 50)); ri.insert(pair ('C', 100)); ri.insert(pair ('D', 500)); ri.insert(pair ('M', 1000)); int i = 0; int sum = 0; if(s.length() == 0) return sum; else sum = ri[s[0]]; for (i = 1; i < s.length(); i++) { if (ri[s[i]] > ri[s[i - 1]]) sum += (ri[s[i]] - 2 * ri[s[i - 1]]); //这个数比上一个数要大,那么就要先减去上一个已经加上的数,同时加上该数-上一个数。 else sum += ri[s[i]]; } return sum; } };
转载地址:http://eytsi.baihongyu.com/