题解 | #牛牛和罗马数字智力游戏#
牛牛和罗马数字智力游戏
https://www.nowcoder.com/practice/7f4bd3b2d7d34f5c87d84120d9782c1d
#include <unordered_map> class Solution { public: /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param num int整型 * @param limit int整型 * @return string字符串 */ string integerToRomanWithReverse(int num, int limit) { // write code here // 哈希表+数学 unordered_map<int, string> um; um[1] = "I"; um[4] = "IV"; um[5] = "V"; um[9] = "IX"; um[10] = "X"; um[40] = "XL"; um[50] = "L"; um[90] = "XC"; um[100] = "C"; um[400] = "CD"; um[500] = "D"; um[900] = "CM"; um[1000] = "M"; // 如何将阿拉伯数字转成罗马数字呢? string str = ""; while(num) { if(um.count(num)) { str += um[num]; break; } if(num>1000) { str += um[1000]; num -= 1000; } else if(num>900) { str += um[900]; num -= 900; } else if(num>500) { str += um[500]; num -= 500; } else if(num>400) { str += um[400]; num -= 400; } else if(num>100) { str += um[100]; num -= 100; } else if(num>90) { str += um[90]; num -= 90; } else if(num>50) { str += um[50]; num -= 50; } else if(num>40) { str += um[40]; num -= 40; } else if(num>10) { str += um[10]; num -= 10; } else if(num>9) { str += um[9]; num -= 9; } else if(num>5) { str += um[5]; num -= 5; } else if(num>4) { str += um[4]; num -= 4; } else { str += um[1]; num -= 1; } } // 反转字符串 if((int)str.size()>=limit) reverse(str.begin(),str.end()); return str; } };