Leetcode Roman to Integer

来源:互联网 发布:python gnureadline 编辑:程序博客网 时间:2024/06/08 07:13

罗马数转整数,比较新鲜。

罗马数的记数方法和组数规则可以参考http://baike.baidu.com/link?url=mYiSRssk7gcAkxAsio8k0tfjy7dZV8PYMYvpW28rLGxfLJimaoIibKS_WPTY2KEy

理解了以后再做就简单了不少。

class Solution {public:    bool judge(string s, int i){        if((s[i] == 'V' || s[i] == 'X' )&& s[i-1] == 'I')            return true;        else if((s[i] == 'L' || s[i] == 'C') && s[i-1] == 'X')            return true;        else if((s[i] == 'M' || s[i] == 'D') && s[i-1] == 'C')            return true;        return false;    }    int romanToInt(string s) {        // Note: The Solution object is instantiated only once and is reused by each test case.        int ans = 0;        if(s.empty())   return ans;        int r2i[255];        r2i['I'] = 1, r2i['V'] = 5, r2i['X'] = 10, r2i['L'] = 50, r2i['C'] = 100, r2i['D'] = 500, r2i['M'] = 1000;        for(int i = s.size()-1; i >= 0;){            if(i == 0){               ans += r2i[s[i]];               break;            }            if(judge(s, i)){                ans += (r2i[s[i]]-r2i[s[i-1]]);                i -= 2;            }            else{                ans += r2i[s[i]];                i--;            }                        }        return ans;    }};


原创粉丝点击