题目
罗马数字包含以下七种字符: I, V, X, L,C,D 和 M;给定一个罗马数字,将其转换成整数;输入确保在 1 到 3999 的范围内。
示例1
1 | 输入:'III' |
示例2
1 | 输入:'IV' |
示例3
1 | 输入:"MCMXCIV" |
题目
罗马数字包含以下七种数字:I(1), V(5), X(10), L(50), C(100), D(500), M(1000);
那么除了这七种数值可以直接表示外,其他的数值是怎么表示的呢?例如:
数值2: II (两个 I 并列);同理,数字3也一样是三个并列
数字7: VII(一个 V 和两个 I 并列)
数值20: XX (两个 X 并列);同理,数字30也一样是三个并列
数值200:CCC(三个 C 并列);同理,数字3000也一样是三个并列
通常情况下,罗马数字中小的数字放在大的数字右边,即组成一个相加的整数值;但是也有特例,如 4、9、40、90、400、900;并且特殊的规则只有这 6 种情况:
I
可以放在 V(5)
和 X(10)
的左边,即表示 IV(4)
和 IX(9)
X
可以放在 L(50)
和 C(100)
的左边,即表示 XL(40)
和 XC(90)
C
可以放在 D(500)
和 M(1000)
的左边,即表示 CD(400)
和 CM(900)
那么,在满足以上条件的情况下,给定一个整数,将其抓换成罗马数字;并保证数字在 [1 - 3999] 内。
示例1
1 | 输入:3 |
示例2
1 | 输入:59 |
示例3
1 | 输入:1993 |
题目:实现 atoi
,将字符串转成整数。
该函数首先需要丢弃任意多的空格字符,直到找到第一个非空格字符为止;如果第一个非空字符是正号或者负号,选取该符号,并将其与后面尽可能多的连续的数字组合起来,这部分字符即为整数的值;如果第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。
字符串可以在形成整数的字符后面包括多余的字符,这些字符可以被忽略,他们对函数没有影响。
当字符串中的第一恶非空字符序列不是有效的整数,或字符串为空,或字符串仅包含空白字符时,则不进行转换。
或函数不能执行有效的转换,则返回0.
说明
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。如果数值超过可表示的范围,则返回 (231 − 1) 或 (−231) 。
示例1
1 | 输入:"42" |
示例2
1 | 输入:" 42" |
示例3
1 | 输入:"29292 asdddf" |
示例4
1 | 输入:"afsfsf 442232" |
示例5
1 | 输入:"-91283472332" |