題型解說
這是一題難度為簡單的題目
需要設計一個方法,此方法會傳入一個羅馬數字字串 s
將羅馬數字轉成阿拉伯數字後回傳
解題思路
這一題只要按照題目中給的規則跑一次迴圈就好,很直覺
PS: 熟悉羅馬數字的規則的話可以將程式碼更省略一點
程式碼
Java
class Solution {
public int romanToInt(String s) {
int result = 0;
s += " "; // 多在字串尾加入一個空字串可以省略迴圈的邊界檢查
for (int i = 0, len = s.length() -1; i < len; i++) {
switch (s.charAt(i)) {
case 'I': // 需要確認下一個符號是不是 V 或 X
if (s.charAt(i +1) == 'V') {
result += 4;
i++;
} else if (s.charAt(i +1) == 'X') {
result += 9;
i++;
} else {
result++;
}
continue;
case 'V':
result += 5;
continue;
case 'X': // 需要確認下一個符號是不是 L 或 C
if (s.charAt(i +1) == 'L') {
result += 40;
i++;
} else if (s.charAt(i +1) == 'C') {
result += 90;
i++;
} else {
result += 10;
}
continue;
case 'L':
result += 50;
continue;
case 'C': // 需要確認下一個符號是不是 D 或 M
if (s.charAt(i +1) == 'D') {
result += 400;
i++;
} else if (s.charAt(i +1) == 'M') {
result += 900;
i++;
} else {
result += 100;
}
continue;
case 'D':
result += 500;
continue;
case 'M':
result += 1000;
continue;
}
}
return result;
}
}