标签:
罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。按照下述的规则可以表示任意正整数。需要注意的是罗马数字中没有“0”,与进位制无关。一般认为罗马数字只用来记数,而不作演算。
)表示,而是用XCIX(
)表示。(等同于阿拉伯数字每位数字分别表示。)
)倍。class Solution {
public:
std::string intToRoman(int num) {
std::string result = "";
std::string romanNums[4][10] = {
{"", "I", "II", "III", "IV", "V", "VI", "VII", "VIII", "IX"},
{"", "X", "XX", "XXX", "XL", "L", "LX", "LXX", "LXXX", "XC"},
{"", "C", "CC", "CCC", "CD", "D", "DC", "DCC", "DCCC", "CM"},
{"", "M", "MM", "MMM"}
};
//取出前三位的数字
for (int i = 1000, j = 3; i != 1; i /= 10, --j) {
result += romanNums[j][num / i % 10];
}
//取出最后一位的数字
result += romanNums[0][num % 10];
return result;
}
}; 上述代码在LeetCode中的最快执行时间是36ms,但是把二维数组改为char *则最快执行时间是24ms。。。说明C++的string在这里没有char*快啊。LeetCode之12---Integer to Roman
标签:
原文地址:http://blog.csdn.net/jung_zhang/article/details/51105462