标签:
罗马数字共有7个,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。按照下述的规则可以表示任意正整数。需要注意的是罗马数字中没有“0”,与进位制无关。一般认为罗马数字只用来记数,而不作演算。
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