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;
}
};

最新文章

  1. ppt 数组课后作业
  2. 不同包中继承关系访问protected内部类问题
  3. jquery 监听input输入值事件
  4. mysql 学习笔记 第二天
  5. 第一个PyQt程序
  6. BZOJ1016 最小生成树计数
  7. TP常用函数
  8. .NET高端职位招聘要求
  9. yum命令常见方法
  10. UVA 1601 The Morning after Halloween
  11. HDU-2502-月之数
  12. Kali Linux安装字典StarDict
  13. 常用的js正则验证整理
  14. 雷林鹏分享:jQuery EasyUI 数据网格 - 创建复杂工具栏
  15. [matlab] 19.matlab 基础几何学
  16. MySQL 存储过程与事物
  17. Private表示该属性(方法)为只有本类内部可以访问(类内部可见)。
  18. Dictionary CovertTo List
  19. Java设计模式(22)命令模式(Command模式)
  20. Haskell语言学习笔记(40)Arrow(1)

热门文章

  1. POJ_3414 Pots 【复杂BFS】
  2. 116th LeetCode Weekly Contest Maximum Width Ramp
  3. ZOJ - 2676 01分数规划 浮点ISAP
  4. TransactionScope小例
  5. web 页面 验证码 实现
  6. Oracle的pipelined函数实现高性能大数据处理
  7. 比较两种数组随机排序方法的效率 JavaScript版
  8. Tomcat疑难杂症解决记录
  9. rem.js的用法及在浏览器端的适配
  10. js 判断各种数据类型 typeof 几种类型值