LeetCode题组:第13题-罗马数字转整数
生活随笔
收集整理的這篇文章主要介紹了
LeetCode题组:第13题-罗马数字转整数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
1.題目:回文數(shù)
羅馬數(shù)字包含以下七種字符: I, V, X, L,C,D 和 M。
| I | 1 |
| V | 5 |
| X | 10 |
| L | 50 |
| C | 100 |
| D | 500 |
| M | 1000 |
例如, 羅馬數(shù)字 2 寫做II ,即為兩個并列的 1。12寫做 XII ,即為 X + II 。 27寫做 XXVII, 即為XX + V + II。
通常情況下,羅馬數(shù)字中小的數(shù)字在大的數(shù)字的右邊。但也存在特例,例如 4 不寫做 IIII,而是 IV。數(shù)字 1 在數(shù)字 5 的左邊,所表示的數(shù)等于大數(shù) 5 減小數(shù) 1 得到的數(shù)值 4 。同樣地,數(shù)字 9 表示為 IX。這個特殊的規(guī)則只適用于以下六種情況:
- I 可以放在 V (5) 和 X (10) 的左邊,來表示 4 和 9。
- X 可以放在 L (50) 和 C (100) 的左邊,來表示 40 和 90。
- C 可以放在 D (500) 和 M (1000) 的左邊,來表示 400 和 900。
給定一個羅馬數(shù)字,將其轉(zhuǎn)換成整數(shù)。輸入確保在 1 到 3999 的范圍內(nèi)。
示例 1:
輸入: “III”
輸出: 3
示例 2:
輸入: “IV”
輸出: 4
示例 3:
輸入: “IX”
輸出: 9
示例 4:
輸入: “LVIII”
輸出: 58
解釋: L = 50, V= 5, III = 3.
示例 5:
輸入: “MCMXCIV”
輸出: 1994
解釋: M = 1000, CM = 900, XC = 90, IV = 4.
2.我的解答
#include<stdio.h> //函數(shù)申明 int romanToInt(char *s); int romanToInt(char * s){int count = 0;while (*s){if (*s == 'V') count += 5;else if (*s == 'L') count += 50;else if (*s == 'D') count += 500;else if (*s == 'M') count += 1000;else if (*s == 'I')count = (*(s + 1) == 'V' || *(s + 1) == 'X') ? count - 1 : count + 1;else if (*s == 'X')count = (*(s + 1) == 'L' || *(s + 1) == 'C') ? count - 10 : count + 10;elsecount = (*(s + 1) == 'D' || *(s + 1) == 'M') ? count - 100 : count + 100;s++;}return count; }int main(){char *s = "IV";printf("%d\n",romanToInt(s));return 0; }總結(jié)
以上是生活随笔為你收集整理的LeetCode题组:第13题-罗马数字转整数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言-将数字转化为字符串
- 下一篇: C语言-求字符串长度-strlen()与