【leetcode】RomantoInteger
2,290 views
0
Question :
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
Anwser 1 :
class Solution { public: int toNum(char c) { switch(c) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return 0; } } int romanToInt(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int ret = 0; for(int i = 0; i < s.size(); i++) { if(i + 1 < s.size()) { if(toNum(s[i]) < toNum(s[i+1])) // high num < low num, then minus { ret -= toNum(s[i]); } else { ret += toNum(s[i]); } } else { ret += toNum(s[i]); } } return ret; } };
Anwser 2 :
class Solution { public: int toNum(char c) { switch(c) { case 'I': return 1; case 'V': return 5; case 'X': return 10; case 'L': return 50; case 'C': return 100; case 'D': return 500; case 'M': return 1000; default: return 0; } } int romanToInt(string s) { // Start typing your C/C++ solution below // DO NOT write int main() function int ret = 0; int len = s.size(); int pre = 1001; int cur; for (int i = 0; i < len; ++i) { cur = toNum(s[i]); ret += cur; if (cur > pre) { ret -= 2*pre; // pre already add one time, now minus tow times } pre = cur; } return ret; } };
版权所有: 本文系米扑博客原创、转载、摘录,或修订后发表,最后更新于 2013-04-21 10:40:47
侵权处理: 本个人博客,不盈利,若侵犯了您的作品权,请联系博主删除,莫恶意,索钱财,感谢!