题解 | #牛牛的罗马时代节日#
牛牛的罗马时代节日
https://www.nowcoder.com/practice/97447e046b704ffda3f51281bd7e296b
题目考察的知识点:哈希
题目解答方法的文字分析:小数在大数的左边,那么就是相减;如果将之前的小数是按加数算,那么需要减2倍的小数。
本题解析所用的编程语言:c++
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param cowsRomanNumeral string字符串vector
* @return int整型
*/
int sumOfRomanNumerals(vector<string>& cowsRomanNumeral) {
// write code here
unordered_map<char, int> mp;
mp.insert(pair('I', 1));
mp.insert(pair('V', 5));
mp.insert(pair('X', 10));
mp.insert(pair('L', 50));
mp.insert(pair('C', 100));
mp.insert(pair('D', 500));
mp.insert(pair('M', 1000));
int ret = 0;
for (int i = 0; i < cowsRomanNumeral.size(); ++i)
{
for (int j = 0; j < cowsRomanNumeral[i].size(); ++j)
{
if (j >= 1 && mp[cowsRomanNumeral[i][j - 1]] < mp[cowsRomanNumeral[i][j]])
{
ret -= mp[cowsRomanNumeral[i][j - 1]] * 2;
}
ret += mp[cowsRomanNumeral[i][j]];
}
}
return ret;
}
};

查看13道真题和解析