[LeetCode] Roman to Integer 解题报告
来源:互联网 发布:ipcam监控软件下载 编辑:程序博客网 时间:2024/05/29 03:39
[题目]
Given a roman numeral, convert it to an integer.
Input is guaranteed to be within the range from 1 to 3999.
[中文翻译]
给定一个罗马数字,将其转换为整数。
输入保证在1到3999的范围内。
[解题思路]
罗马数字转换为整数的规律较为简单。
正常情况下,罗马数字的排列,是从大到小的,如’VII’代表5+1+1=7,但有一些特殊的情况,如’IV’表示5-1=4,’CD’表示500-100=400,这些特殊情况,都是小的字符排在了大的字符前面,这种情况下,在计算的时候需要减去小的字符。
很庆幸,这些小字符排在大字符前面的情况,只会以两个字符的形式出现,即不会用’IIV’表示5-1-1=3,或者用’CCD’表示500-100-100=300。
因此,在程序里,只要从前往后遍历每个罗马字符,判断一下该字符A是否与之后的字符B形成逆序对,如果是,则处理这两个字符,result=result+B-A;如果不是则只处理该字符,result=result+A。
[C++代码]
class Solution {public: int romanToInt(string s) { int roman[256]; int res = 0; roman['I'] = 1; roman['V'] = 5; roman['X'] = 10; roman['L'] = 50; roman['C'] = 100; roman['D'] = 500; roman['M'] = 1000; for (int i = 0; i < s.size(); ) { if (i + 1 < s.size() && roman[s.at(i)] < roman[s.at(i + 1)]) { res = res + roman[s.at(i + 1)] - roman[s.at(i)]; i += 2; } else { res = res + roman[s.at(i)]; i++; } } return res; }};
0 0
- 【LeetCode】Integer to Roman 和 Roman to Integer 解题报告
- 【LeetCode】Integer to Roman 和 Roman to Integer 解题报告
- [LeetCode]Roman to Integer,解题报告
- [LeetCode]Integer to Roman,解题报告
- LeetCode解题报告--Integer to Roman
- LeetCode解题报告--Roman to Integer
- 【LeetCode】Roman to Integer 解题报告
- 【LeetCode】Integer to Roman 解题报告
- [leetcode] 13. Roman to Integer 解题报告
- [LeetCode] Integer to Roman 解题报告
- [LeetCode] Roman To Integer 解题报告
- [leetcode] 12. Integer to Roman 解题报告
- LeetCode 13. Roman to Integer 解题报告
- LeetCode 12. Integer to Roman 解题报告
- [Leetcode] 12. Integer to Roman 解题报告
- [Leetcode] 13. Roman to Integer 解题报告
- [LeetCode] Integer to Roman 解题报告
- [LeetCode] Roman to Integer 解题报告
- Map遍历
- 背包、队列、栈
- 悲壮的码字僧(研究生)艰辛写作路(PS:-学渣开启学霸模式)
- Struts2---类型转换
- Redis 学习之主从复制
- [LeetCode] Roman to Integer 解题报告
- Android-UI-绘制
- Android平台Native开发与JNI机制
- 求二叉树的先序遍历
- 如何进行Sublime Text插件的升级和卸载?
- 如何快速转载CSDN中的博客
- tar 使用
- github上fork别人的代码之后,如何保持和原作者同步的更新
- Android-UI-事件传递