题目:来源于力扣

上代码:
class Solution {
public:
//map还能放在外面吗?
//我是第一次见
//放在int函数里面也是可以
map<char,int> m{
//凭印象写
//注意:要用逗号隔开
{'I',1},
{'V',5},
{'X',10},
{'L',50},
{'C',100},
{'D',500},
{'M',1000}
};
int romanToInt(string s) {
//思路是用map对应每个罗马数字和对应的值
//然后遍历字符串
//罗马数字小的在前面做减法,否则做加法
int sum=0;
int n=s.length();
for(int i=0;i<n;++i){
// i<n-1目的是防止后面s[i+1]溢出
// 键对应值
int value=m[s[i]];
if(i<n-1 && value < m[s[i+1]]){
sum-=value;
}else{
sum+=value;
}
}
return sum;
}
};
开始我用if-else if弄不出来,整得挺复杂。看了题解之后,啊我破防了鸭!
不说了不说了,我是彩笔(∪.∪ )…zzz
本文介绍了如何使用C++解决力扣上的罗马数字转整数问题。作者分享了使用映射(map)简化if-else逻辑的方法,通过遍历罗马数字字符串并根据前后字符的关系进行加减运算,实现了转换功能。作者在过程中体验到学习新解法的豁然开朗,感叹有时候简单的思维可以带来更高效的代码。
356

被折叠的 条评论
为什么被折叠?



