您的位置:首页 > 其它

Leetcode Roman to Integer

2013-10-16 12:58 274 查看
罗马数转整数,比较新鲜。

罗马数的记数方法和组数规则可以参考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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  罗马数 string