description: 把阿拉伯数字转换成罗马数字 Note: Example 1:Input: 3Output: "III"Example 2:Input: 4Output: "IV"Example 3:Input: 9Output: "IX"Example 4:Input: 58Output: "LVIII"Explanation: L = 50, V = 5, III = 3.Example 5:Input: 199
description:
把阿拉伯数字转换成罗马数字
Note:
Example 1: Input: 3 Output: "III" Example 2: Input: 4 Output: "IV" Example 3: Input: 9 Output: "IX" Example 4: Input: 58 Output: "LVIII" Explanation: L = 50, V = 5, III = 3. Example 5: Input: 1994 Output: "MCMXCIV" Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
my answer:
感恩
大佬的answer:真的在leetcode里写代码的时候要时刻注意还是不是英文半角,要不然真的崩溃,哪出错都不知道
class Solution { public: string intToRoman(int num) { string res = ""; vector<int> value = {1000, 500, 100, 50, 10, 5, 1}; vector<char> roman = {'M', 'D', 'C', 'L', 'X', 'V', 'I'}; for(int n = 0; n < 7; n += 2){ int x = num / value[n]; if (x < 4){ for (int i = 1; i <= x; i++) res += roman[n]; } else if(x == 4){ res = res + roman[n] + roman[n - 1]; } else if(x > 4 && x < 9){ res += roman[n - 1]; for (int i = 6; i <= x; i++) res += roman[n]; }else if(x == 9){ res = res + roman[n] + roman[n -2]; } num %= value[n]; } return res; } };
relative point get√:
hint :
在4和9处讨论好分割点,其实比较easy辣,思路逻辑神马的都还ok。