文章目录
更多LeetCode题解
My Solution
class Solution {
public:
vector<string> unit = { "","I","II","III","IV","V","VI","VII","VIII","IX" };
vector<string> ten = { "","X" , "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC" };
vector<string> hund = { "","C","CC","CCC","CD","D","DC","DCC","DCCC","CM" };
vector<string> thou = { "","M","MM","MMM" };
vector<vector<string>> roman = { unit, ten, hund, thou };
string intToRoman(int num) {
if (num < 1 || num>3999) {
cout << "Input out of range." << endl;
}
vector<int> digit;
while (num) {
digit.push_back(num % 10);
num /= 10;
}
string res;
for (int i = digit.size() - 1; i >= 0; i--) {
res.append(roman[i][digit[i]]);
}
return res;
}
};
勉强算第二种解法吧
其实思想和第一种并没有区别。
public class Solution {
public String intToRoman(int number) {
int[] values = {1000, 900, 500, 400, 100, 90, 50, 40, 10, 9, 5, 4, 1 };
String[] numerals = {"M", "CM", "D", "CD", "C", "XC", "L", "XL", "X", "IX", "V", "IV", "I" };
StringBuilder result = new StringBuilder();
for (int i = 0; i < values.length; i++) {
while (number >= values[i]) {
number -= values[i];
result.append(numerals[i]);
}
}
return result.toString();
}
}