题目

题解
1.首先 我们可以发现除了千位数以为都是和三个字母有关系(百位是CDM 十位是XLC 个位是IVX)
由于4和9是组合而来所以 我们写一个字符串 判断一下当前位数 然后修改和上面一样(4是第一位和第二位组合 9是第一位和第三位组合)
然后判断一下数的范围添加到字符串后面即可
2.力扣官方的另一种解发 采用了把罗马数字和数的位数对应成一张表 然后需要的时候再根据余数找的做法 具体可以点击这里
代码
#include<iostream>
#include<string>
using namespace std;
//int pow(10, i);
//int a = atoi(s.c_str());
class Solution {
public:
string intToRoman(int num) {
string real = to_string(num);
string Rome = "";
int length= real.size();
for (int i = real.size()-1; i >-1; i--) {
int now = real.size() - 1 - i;
int num = real[now] - 48;
string number;
if (i >= 3) {
number = "M";
}
else if(i >= 2)
{
number = "CDM";
}
else if (i >= 1)
{
number = "XLC";
}
else if (i >= 0)
{
number = "IVX";
}
if (num > 0 && num < 4) {
for (int j = 0; j < num; j++) {
Rome = Rome + number[0];
}
}
else if (num == 4) {
Rome = Rome + number[0] + number[1];
}
else if (num > 4 && num < 9) {
Rome = Rome + number[1];
for (int j = 5; j < num; j++) {
Rome = Rome + number[0];
}
}
else if (num == 9) {
Rome = Rome + number[0] + number[2];
}
}
cout << Rome << endl;
return Rome;
}
};
int main() {
Solution sol;
int num = 27;
sol.intToRoman(num);
}