原题链接:https://leetcode.com/problems/integer-to-roman/description/
给定数字输出罗马数字
我的实现:
class Solution { public: string intToRoman(int num) { int temp = num; string result = ""; while (temp > 0) { if (temp >= 1000) { switch(temp / 1000) { case 1: result += "M"; break; case 2: result += "MM"; break; case 3: result += "MMM"; break; default: return "out of range"; } temp = temp - (int)(temp / 1000) * 1000; } else if (temp >= 100 && temp < 1000) { switch (temp / 100) { case 1: result += "C"; break; case 2: result += "CC"; break; case 3: result += "CCC"; break; case 4: result += "CD"; break; case 5: result += "D"; break; case 6: result += "DC"; break; case 7: result += "DCC"; break; case 8: result += "DCCC"; break; case 9: result += "CM"; break; } temp = temp - (int)(temp / 100) * 100; } else if (temp >= 10 && temp < 100) { switch (temp / 10) { case 1: result += "X"; break; case 2: result += "XX"; break; case 3: result += "XXX"; break; case 4: result += "XL"; break; case 5: result += "L"; break; case 6: result += "LX"; break; case 7: result += "LXX"; break; case 8: result += "LXXX"; break; case 9: result += "XC"; break; } temp = temp - (int)(temp / 10) * 10; } else if (temp >= 1 && temp < 10) { switch (temp / 1) { case 1: result += "I"; break; case 2: result += "II"; break; case 3: result += "III"; break; case 4: result += "IV"; break; case 5: result += "V"; break; case 6: result += "VI"; break; case 7: result += "VII"; break; case 8: result += "VIII"; break; case 9: result += "IX"; break; } temp = temp - (int)(temp / 1) * 1; } } return result; } };
总结:主要就是注意罗马数字的规则