13. Roman to Integer

//我的小破码
class Solution {
public:
    int romanToInt(string s) {
        int len=s.size();
        int *a=new int[len];
        int ans=0;
        string rom="MDCLXVI";
        int value[]={1000,500,100,50,10,5,1};
        for (int i=0;i
  1. 很简单的题要死要活。主要的思路还是看来的。可能因为不是很懂罗马数字的规则?
  2. 还有字符串啊,指针之类的概念也不够清楚。
  3. map类型好像很好用!!好多题都可以用它!要学!!!
//讨论区的别人家的码
int romanToInt(string s) 
{
    unordered_map T = { { 'I' , 1 },
                                   { 'V' , 5 },
                                   { 'X' , 10 },
                                   { 'L' , 50 },
                                   { 'C' , 100 },
                                   { 'D' , 500 },
                                   { 'M' , 1000 } };
                                   
   int sum = T[s.back()];
   for (int i = s.length() - 2; i >= 0; --i) 
   {
       if (T[s[i]] < T[s[i + 1]])
       {
           sum -= T[s[i]];
       }
       else
       {
           sum += T[s[i]];
       }
   }
   
   return sum;
}
···

你可能感兴趣的:(13. Roman to Integer)