题解 | #牛牛和罗马数字智力游戏#
牛牛和罗马数字智力游戏
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;
}
};
腾讯公司福利 1139人发布