#include <iostream>
#include <unordered_map>

using namespace std;

class Solution {
private:
    unordered_map<char, int> symbolValues = {
        {'I', 1},
        {'V', 5},
        {'X', 10},
        {'L', 50},
        {'C', 100},
        {'D', 500},
        {'M', 1000},
    };

public:
    int romanToInt(string s) {
        int ans = 0;
        int n = s.length();
        for (int i = 0; i < n; ++i) {
            int value = symbolValues[s[i]];
//            if (i < n - 1 && value < symbolValues[s[i + 1]]) {
              if ( value < symbolValues[s[i + 1]]) {
                ans -= value;
            }
            else {
                ans += value;
            }
        }
        return ans;
    }
};

int main() {
    Solution sol;
    string input = "MCMXCIV";
    int output = sol.romanToInt(input);
    cout << "输入: s = " << input << endl;
    cout << "输出: " << output << endl;

    return 0;
}

class 定义了一个类Solution,这个类里面有有私有成员和共有成员

首先定义了一个私有成员,我也不知道为什么需要这个私有成员,unordered_mapunordered_map<char, int>用法再去搜搜。

注意两个头文件不要加h。

代码整体的思路就是定义一个类,这个类首先定义了私有对象一个map的字符到整型的映射,第二类就是用一个公共类,这个类调用了私有类的映射,并且遍历传入字符串的映射值,并且将值求出

11-02 22:37