LeetCode 13 罗马数字转整数
1. 题目地址
https://leetcode.cn/problems/roman-to-integer/description/
2. 题解
这道题的解题过程非常简单,具体如下:
1. 我们需要将罗马数字对应的数,存到一个哈希表中。待用到时,直接使用即可。
2. 对于正常情况讲(前面的罗马数字大于后面的罗马数字),当我们遍历到一个罗马数字之后,直接累加其值即可。
3. 对于题目中的例外情况,我们发现:该二元组后面的罗马数字要大于前面的罗马数字,因此我们直接累加:后面的罗马数字值 - 前面的罗马数字值即可。需要注意的是:我们需要判断边界(该罗马数字后面一定要有数)
3. 代码
class Solution {
public:
int romanToInt(string s) {
int result = 0;
unordered_map<char,int> h;
h['I'] = 1;
h['V'] = 5;
h['X'] = 10;
h['L'] = 50;
h['C'] = 100;
h['D'] = 500;
h['M'] = 1000;
for(int i = 0;i < s.size(); i++){
if(i + 1 < s.size() && h[s[i]] < h[s[i+1]]){
result += h[s[i+1]] - h[s[i]];
i++;
}else{
result += h[s[i]];
}
}
return result;
}
};
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现