博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
419. Roman to Integer【medium】
阅读量:5159 次
发布时间:2019-06-13

本文共 1514 字,大约阅读时间需要 5 分钟。

Given a roman numeral, convert it to an integer.

The answer is guaranteed to be within the range from 1 to 3999.

Clarification

What is Roman Numeral?

Example

IV -> 4

XII -> 12

XXI -> 21

XCIX -> 99

 

题意

计数方法:

基本字符
I
V
X
L
C
D
M
相应的阿拉伯数字表示为
1
5
10
50
100
500
1000
  1. 相同的数字连写、所表示的数等于这些数字相加得到的数、如:Ⅲ=3;
  2. 小的数字在大的数字的右边、所表示的数等于这些数字相加得到的数、 如:Ⅷ=8、Ⅻ=12;
  3. 小的数字(限于 I、X 和 C)在大的数字的左边、所表示的数等于大数减小数得到的数、如:Ⅳ=4、Ⅸ=9;
  4. 正常使用时、连写的数字重复不得超过三次;
  5. 在一个数的上面画一条横线、表示这个数扩大 1000 倍。

组数规则:

有两条须注意掌握:
  1. 基本数字 Ⅰ、X 、C 中的任何一个、自身连用构成数目、或者放在大数的右边连用构成数目、都不能超过三个;放在大数的左边只能用一个;
  2. 不能把基本数字 V 、L 、D 中的任何一个作为小数放在大数的左边采用相减的方法构成数目;放在大数的右边采用相加的方式构成数目、只能使用一个;

 

解法一:

1 class Solution { 2 public: 3     /* 4      * @param s: Roman representation 5      * @return: an integer 6      */ 7     int romanToInt(string s) { 8         int ans = 0; 9         ans = toInt(s[0]);10         11         for (int i = 1; i < s.length(); i++) {12             ans += toInt(s[i]);13           14             if (toInt(s[i-1]) < toInt(s[i])) { 15                 ans -= toInt(s[i-1]) * 2;16             } 17         }18         19         return ans;20     }21   22     int toInt(char s) {23         switch(s) {24             case 'I':return 1;25             case 'V':return 5;26             case 'X':return 10;27             case 'L':return 50;28             case 'C':return 100;29             case 'D':return 500;30             case 'M':return 1000;31         }32         return 0;33     }34 };

 

 

转载于:https://www.cnblogs.com/abc-begin/p/8413681.html

你可能感兴趣的文章
投标项目的脚本练习2
查看>>
201521123107 《Java程序设计》第9周学习总结
查看>>
Caroline--chochukmo
查看>>
iOS之文本属性Attributes的使用
查看>>
从.Net版本演变看String和StringBuilder性能之争
查看>>
Excel操作 Microsoft.Office.Interop.Excel.dll的使用
查看>>
解决Ubuntu下博通网卡驱动问题
查看>>
【bzoj2788】Festival
查看>>
执行gem install dryrun错误
查看>>
HTML5简单入门系列(四)
查看>>
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>