Roman to Integer 罗马数字转为整数

来源:互联网 发布:google drive mac 编辑:程序博客网 时间:2024/06/05 16:42

题目:

链接

解答:

罗马数字转化为整数时不需要考虑太多的复杂规则,根据罗马数字的书写规则,当前的字母代表的数比下一个数大或相等,那么就加上该数,否则就减去该数。

代码:

  class Solution {  public:  int romanToInt(string s) {  map<char, int> ri;  ri.insert(pair<char, int>('I', 1));  ri.insert(pair<char, int>('V', 5));  ri.insert(pair<char, int>('X', 10));  ri.insert(pair<char, int>('L', 50));  ri.insert(pair<char, int>('C', 100));  ri.insert(pair<char, int>('D', 500));  ri.insert(pair<char, int>('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;  }  };


0 0
原创粉丝点击