代码解决
class Solution { public:// 定义一个哈希表来存储罗马数字符号及其对应的整数值unordered_map<char, int> res = {{'I', 1},{'V', 5},{'X', 10},{'L', 50},{'C', 100},{'D', 500},{'M', 1000},};// 将罗马数字字符串转换为整数的函数int romanToInt(string s) {int num = 0; // 用于存储最终的整数值int n = s.size(); // 获取字符串的长度// 遍历字符串for (int i = 0; i < n; i++) {int value = res[s[i]]; // 获取当前罗马数字符号对应的整数值// 如果当前字符不是最后一个字符,并且当前字符的值小于下一个字符的值if (i < n - 1 && value < res[s[i + 1]]) {num -= value; // 根据罗马数字的规则,减去当前值} else {num += value; // 否则,加上当前值}}// 返回最终的整数值return num;} };
哈希表的初始化:
- 使用一个
unordered_map
来存储罗马数字符号和它们对应的整数值。遍历字符串:
- 遍历输入字符串,对于每个字符,获取其对应的整数值。
- 检查当前字符是否小于下一个字符的值(这意味着当前字符应该被减去),否则将其加到总数中。
处理特殊情况:
- 例如,对于字符串
"IX"
,I
小于X
,因此I
的值应被减去。返回结果:
- 返回计算后的总值,即罗马数字字符串对应的整数值。