编程(罗马数)
代码
class Solution {
public:
int romanToInt(string s)
{
map<char, int>romeMap;
romeMap['I']=1;
romeMap['V']=5;
romeMap['X']=10;
romeMap['L']=50;
romeMap['C']=100;
romeMap['D']=500;
romeMap['M']=1000;
int sum = 0;
for (int i = s.size() - 1; i >= 0; i--)
{
int a = romeMap[s[i]];
if (i == 0)
{
sum += a;
}
else {
int b = romeMap[s[i - 1]];
int flag = a / b;
if (flag == 5 || flag == 10)
{
sum = (sum + a - b);
i--;
}
else
{
sum += a;
}
}
}
return sum;
}
};
结果
12MS | 8MB |
---|---|
63% | 20% |
牙白啊牙白......从后向前取字符,每次取两个,满足特殊条件的就特殊处理......就嗯算。
别人的解法真的是好强好巧好聪明。
零碎
map的用法
1.定义:map<索引数据类型,值数据类型>名称;
如:map<char,int>romeMap;
2.赋值:
如:romeMap['I']=1;
3.插入:
如:romeMap.insert(pair<char,int>('I',1));
4.取对应索引的值:
如:int a = romeMap['I'];
双目运算符
能显著的加快运行速度,一定要用。
如:a = a + 5
a += 5
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人