Given an integer, convert it to a roman numeral.
Input is guaranteed to be within the range from 1 to 3999.
class Solution {public: string intToRoman(int num) { map<int, string> roman; roman[1] = "I"; roman[4] = "IV"; roman[5] = "V"; roman[9] = "IX"; roman[10] = "X"; roman[40] = "XL"; roman[50] = "L"; roman[90] = "XC"; roman[100] = "C"; roman[400] = "CD"; roman[500] = "D"; roman[900] = "CM"; roman[1000] = "M"; int number[] = {1, 4, 5, 9, 10, 40, 50, 90, 100, 400, 500, 900, 1000}; std::vector<int> v(number, number+13); int cur = v.size()-1; //找到第一个比num大的数, for (int i=0; i<v.size(); i++) { if (v[i] > num) { cur = i-1; break; } } string rStr; while (num) { int cnt = num / v[cur]; //cout << cnt << " " << v[cur] << endl; num = num % v[cur]; for (int i=0; i<cnt; i++) rStr.append(roman[v[cur]]); cur--; } return rStr; }};新闻热点
疑难解答