力扣12. 整数转罗马数字
Posted 幽殇默
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了力扣12. 整数转罗马数字相关的知识,希望对你有一定的参考价值。
https://leetcode-cn.com/problems/integer-to-roman/
class Solution {
public:
string intToRoman(int num) {
string ans;
int m_t=num/1000;
for(int i=1;i<=m_t;i++) ans+="M";
num=num%1000;
if(num>=900) ans+="CM",num-=900;
else if(num>=500) ans+="D",num-=500;
if(num>=400) ans+="CD",num-=400;
else
{
int t=num/100;
num=num-t*100;
for(int i=1;i<=t;i++) ans+="C";
}
if(num>=90) ans+="XC",num-=90;
if(num>=50) ans+="L",num-=50;
if(num>=40)
{
int t=num/40;
num=num-t*40;
for(int i=1;i<=t;i++) ans+="XL";
}
if(num>=10)
{
int t=num/10;
num=num-t*10;
for(int i=1;i<=t;i++) ans+="X";
}
if(num==9) ans+="IX",num-=9;
if(num>=5) ans+="V",num-=5;
if(num>=4)
{
int t=num/4;
num=num-t*4;
for(int i=1;i<=t;i++) ans+="IV";
}
if(num)
{
for(int i=1;i<=num;i++) ans+="I";
}
return ans;
}
};
class Solution {
public:
string intToRoman(int num) {
int values[] = {
1000,
900, 500, 400, 100,
90, 50, 40, 10,
9, 5, 4, 1
};
string reps[] = {
"M",
"CM", "D", "CD", "C",
"XC", "L", "XL", "X",
"IX", "V", "IV", "I",
};
string res;
for (int i = 0; i < 13; i ++ ) {
while (num >= values[i]) {
num -= values[i];
res += reps[i];
}
}
return res;
}
};
以上是关于力扣12. 整数转罗马数字的主要内容,如果未能解决你的问题,请参考以下文章
算法学习13. 罗马数字转整数(leetcode力扣 - java / rust)