LeetCode题解 第十二周

来源:互联网 发布:sql updata 编辑:程序博客网 时间:2024/06/05 04:56

1.Roman to Integer

Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.


Difficulty:Easy


Explanation:

1.只要从大到小将这个整型数字分解,再转换成罗马数字即可。

code:
class Solution {public:    int romanToInt(string s) {map<char, int> transmap;int sum = 0;transmap.insert(pair<char, int>((char)'I', 1));transmap.insert(pair<char, int>((char)'V', 5));transmap.insert(pair<char, int>((char)'X', 10));transmap.insert(pair<char, int>((char)'L', 50));transmap.insert(pair<char, int>((char)'C', 100));transmap.insert(pair<char, int>((char)'D', 500));transmap.insert(pair<char, int>((char)'M', 1000));for (int i = 0; i < s.size(); i++){if (s[i] == 'I' || s[i] == 'X' || s[i] == 'C'){if (i+1<s.size()&&transmap[s[i + 1]] > transmap[s[i]]){sum = sum + -1 * transmap[s[i]];continue;}}sum = sum + transmap[s[i]];}return sum;}};


原创粉丝点击