給定羅馬數字字符串(範圍 1-3999),轉為整數。羅馬數字規則:I=1,V=5,X=10,L=50,C=100,D=500,M=1000。左減右加:較小在較大左邊表示減法(如 IV=4, IX=9)。
從左向右掃描,若當前字符值 < 下一字符值,則減去當前值;否則加上當前值。最後加上末尾字符值。
public class Solution {
private static final Map map = Map.of(
'I',1,'V',5,'X',10,'L',50,'C',100,'D',500,'M',1000
);
public int romanToInt(String s) {
int res = 0;
for (int i = 0; i < s.length(); i++) {
int cur = map.get(s.charAt(i));
if (i+1 < s.length() && cur < map.get(s.charAt(i+1))) res -= cur;
else res += cur;
}
return res;
}
}