美文网首页
13. Roman to Integer

13. Roman to Integer

作者: 碗里的大粉条 | 来源:发表于2017-12-23 20:39 被阅读0次
//我的小破码
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<s.size();i++){
            for(int j=0;j<7;j++){
                if (s.substr(i,1)==rom.substr(j,1))
                {a[i]=value[j];
                break;}
            }   
        }
        for(int i=0;i<s.size()-1;i++){
            if (a[i]<a[i+1])
                ans-=a[i];
            else
                ans+=a[i];
        }
        return ans+a[len-1];
    }
};
  1. 很简单的题要死要活。主要的思路还是看来的。可能因为不是很懂罗马数字的规则?
  2. 还有字符串啊,指针之类的概念也不够清楚。
  3. map类型好像很好用!!好多题都可以用它!要学!!!
//讨论区的别人家的码
int romanToInt(string s) 
{
    unordered_map<char, int> 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

      本文链接:https://www.haomeiwen.com/subject/epnqgxtx.html