leetcode 13 roman to integer
2017-02-22 21:56
447 查看
感觉13roman to integer比12integer to roman 要难一些。但是前者的难度是easy,后者难度是medium.
首先看下 integer to roman,
就是给个二维数组,自己去数组里面找就OK了。
roman to integer的话。要考虑后面的数字比前面的大这种情况(比如IX,CD)。自己一开始写的代码是:
再看看大神的代码:
感到惭愧啊。其实思路是一样的,就是实现起来自己拐了很多弯。
首先看下 integer to roman,
string roman[][10] = { {"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"}, {"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"}, {"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"}, {"", "M", "MM", "MMM"} }; int digit=0,temp=0; string r; while(num!=0) { temp=num%10; r=roman[digit][temp]+r; num/=10; digit++; } return r;
就是给个二维数组,自己去数组里面找就OK了。
roman to integer的话。要考虑后面的数字比前面的大这种情况(比如IX,CD)。自己一开始写的代码是:
map<char,int> a={ {'I',1}, {'V',5}, {'X',10}, {'L',50}, {'C',100}, {'D',500}, {'M',1000} }; int len=s.size(); int sum=0; int b[len]; int i; for(i=len-1;i>0;) { if(a[s[i]]<=a[s[i-1]]) { b[i]=1; i--; } else { b[i]=1,b[i-1]=-1; i-=2; } } if(i==0) b[i]=1; for(i=0;i<len;i++) { sum+=a[s[i]]*b[i]; } return sum;
再看看大神的代码:
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;
感到惭愧啊。其实思路是一样的,就是实现起来自己拐了很多弯。
相关文章推荐
- [leetcode 13] Roman to Integer
- LeetCode | #13 Roman to Integer
- LeetCode 13 - Roman to Integer
- leetcode_13题——Roman to Integer(string,数学问题)
- [Leetcode 13, Easy] Roman To Integer
- LeetCode 13 - Roman to Integer
- LeetCode题解(13)--Roman to Integer
- LeetCode13 roman to integer
- LeetCode 13:"Roman to Integer"
- [Leetcode] 13 - Roman to Integer
- leetcode 13 -- Roman to Integer
- leetcode[13]Roman to Integer
- LeetCode 13 Roman to Integer
- [LeetCode]13 Roman to Integer
- leetcode13 Roman to Integer
- LeetCode(13) RomanToInteger
- leetcode 13 Roman to Integer
- Leetcode[12-13] Roman to Integer & Integer to Roman(Java)
- LeetCode_13---Roman to Integer
- LeetCode 13 Roman to Integer (C,C++,Java,Python)