leetcode 136:roman-to-integer&&leetcode 137:integer-to-roman

按我的看法来说这两个题实在没啥意思,所以写一块了。需要了解一下罗马数字和整数之间的转换规则即可。

leetcode 136:

题目描述

请将给出的罗马数字转化为整数
保证输入的数字范围在1 到 3999之间。
代码如下:
 1  int romanToInt(string s) {
 2         std::map<char, int> m = { {'I',1},{'V',5},{'X',10},{'L',50},{'C',100},{'D',500},{'M',1000} };
 3         int n = s.size();
 4         int sum = m[s.back()];
 5         for (int i = n - 2; i >= 0; i--)
 6         {
 7             if(m[s[i]] < m[s[i+1]])
 8                 sum -= m[s[i]];
 9             else
10                 sum = sum + m[s[i]];
11         }
12         return sum;
13     }

leetcode 137:

题目描述

请将给出的整数转化为罗马数字
保证输入数字的范围在1 到 3999之间。
代码如下:
 1 string intToRoman(int num) {
 2         string str;
 3         vector<int>m={1,4,5,9,10,40,50,90,100,400,500,900,1000};
 4         vector<string>n={"I","IV","V","IX","X","XL","L","XC","C","CD","D","CM","M"};
 5          for(int i=m.size()-1;i>=0;){
 6             if(num>=m[i]){
 7               str+=n[i];
 8               num=num-m[i];
 9             }
10             else{
11               i--;
12             }
13          }
14         return str;
15     }

 

posted @ 2020-08-12 13:54  请叫我小小兽  阅读(176)  评论(0编辑  收藏  举报