[LeetCode]Roman to Integer
Roman to Integer
羅馬數字(Roman Numbers)共有7個 I, V, X, L, C, D, M。
Symbol Value I 1 V 5 X 10 L 50 C 100 D 500 M 1000
舉例來說羅馬數字的 II 表示 2、12 -> XII、27 -> XXVII。但往右加的數字不會超過三位,因此產生右加左減的計算方式:
- 在較大的羅馬數字的右邊記上較小的羅馬數字,表示大數字加小數字
- 在較大的羅馬數字的左邊記上較小的羅馬數字,表示大數字減小數字
IV -> 4
IX -> 9
XL -> 40
XC -> 90
CD -> 400
CM -> 900
Example 1
Input: s = "III" Output: 3 Explanation: III = 3.
Example 2
Input: s = "LVIII" Output: 58 Explanation: L = 50, V= 5, III = 3.
Example 3
Input: s = "MCMXCIV" Output: 1994 Explanation: M = 1000, CM = 900, XC = 90 and IV = 4.
解法
class Solution
{
/**
* @param String $s
* @return Integer
*/
function romanToInt($s)
{
$arr_list = array(
'I' => 1,
'V' => 5,
'X' => 10,
'L' => 50,
'C' => 100,
'D' => 500,
'M' => 1000,
);
$number = 0;
for ($i = 0; $i < strlen($s); $i++) {
$temp_a = $arr_list[substr($s, $i, 1)];
$temp_b = $arr_list[substr($s, $i + 1, 1)];
if ($temp_a < $temp_b) {
$number -= $temp_a;
} else {
$number += $temp_a;
}
}
return $number;
}
}
留言
張貼留言