【Leetcode】【Easy】Roman to Integer
2024-09-04 06:27:53
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
解题:
将字符形式的罗马数字,转化为整形。输入在1~3999之间。罗马数字的书写规范,请参见罗马数字_百度百科;
本题的关键点在于,如何处理I、X、C三个数字放在大数左边是相减,放在大数右边是相加。
解法是,可以从输入字符串的末端开始,从右向左遍历字符串。对于出现的一般罗马字符,进行累加,当出现I、X、C时,判断当前累加值是否达到(>=)5、50、500。如果达到则为相减,如果未达到,则为相加。
原因是,单反需要相减,必定是在大数的左边,因此必定大数已经出现。
class Solution {
public:
int romanToInt(string s) {
int len = s.length();
int sum = ; for (int i=len-; i>=; --i) {
if (s[i] == 'I')
sum += sum >= ? - : ; if (s[i] == 'V')
sum += ; if (s[i] == 'X')
sum += sum >= ? - : ; if (s[i] == 'L')
sum += ; if (s[i] == 'C')
sum += sum >= ? - : ; if (s[i] == 'D')
sum += ; if (s[i] == 'M')
sum += ;
} return sum;
}
};
最新文章
- ppt 数组课后作业
- 不同包中继承关系访问protected内部类问题
- jquery 监听input输入值事件
- mysql 学习笔记 第二天
- 第一个PyQt程序
- BZOJ1016 最小生成树计数
- TP常用函数
- .NET高端职位招聘要求
- yum命令常见方法
- UVA 1601 The Morning after Halloween
- HDU-2502-月之数
- Kali Linux安装字典StarDict
- 常用的js正则验证整理
- 雷林鹏分享:jQuery EasyUI 数据网格 - 创建复杂工具栏
- [matlab] 19.matlab 基础几何学
- MySQL 存储过程与事物
- Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。
- Dictionary CovertTo List
- Java设计模式(22)命令模式(Command模式)
- Haskell语言学习笔记(40)Arrow(1)