#include <iostream>
#include <map>
#include <string>
using namespace std;
void test01()
{
string a;
cout << "请输入罗马数字" << endl;
cin >> a;
map<char, int> m;
m.insert(pair<char, int>('I', 1));
m.insert(pair<char, int>('V', 5));
m.insert(pair<char, int>('X', 10));
m.insert(pair<char, int>('L', 50));
m.insert(pair<char, int>('C', 100));
m.insert(pair<char, int>('D', 500));
m.insert(pair<char, int>('M', 1000));
int result = 0;
int prevalue = 0;
for (int i = 0; i < a.size(); i++)
{
if (m.find(a[i]) == m.end())
{
cout << "无效的罗马数字字符: " << a[i] << endl;
return;
}
int currentValue = m[a[i]];
if (i < a.size() - 1 && currentValue < m[a[i + 1]])
{
result -= currentValue;
}
else
{
result += currentValue;
}
}
cout << "得到的数字为:" << endl;
cout << result << endl;
}
int main() {
test01();
system("pause");
return 0;
}
力扣罗马转数字代码
最新推荐文章于 2025-04-29 12:29:58 发布