leetcode: 13, 로마 숫자 는 다음 과 같은 7 가지 문 자 를 포함한다. I, V, X, L, C, D 와 M.
2979 단어 leetcode 문제 풀이
I 1
V 5
X 10
L 50
C 100
D 500
M 1000
, 2 II , 1。
12 XII , X + II 。 27 XXVII, XX + V + II 。
, 。
, 4 IIII, IV。
1 5 , 5 1 4 。
, 9 IX。 :
I V (5) X (10) , 4 9。
X L (50) C (100) , 40 90。
C D (500) M (1000) , 400 900。
, 。 1 3999 。
예시:
: "III"
: 3
예시:
: "IV"
: 4
예시:
: "IX"
: 9
예시:
: "LVIII"
: 58
: L = 50, V= 5, III = 3.
예시:
: "MCMXCIV"
: 1994
: M = 1000, CM = 900, XC = 90, IV = 4.
2. 분석:
저 는 Map 집합 방법 을 취 했 습 니 다. 이 문 제 를 보면 Map 집합 으로 문 제 를 해결 할 수 있 습 니 다. 그 다음 에 이 문자열 을 옮 겨 다 니 며 문자열 의 모든 요 소 를 얻 을 수 있 기 때문에 방법 s. charAt (i) 을 취 할 수 있 습 니 다.이 요소 와 이 요소 의 이전 요소 가 특수 한 요 구 를 만족 시 키 는 지 판단 합 니 다. 만족 하지 않 으 면 Map 집합 에 있 는 map. get () 을 직접 사용 합 니 다. key 에 따라 value 까지 최종 적 으로 돌아 오 는 result 를 추가 하면 됩 니 다.
코드
class Solution {
public int romanToInt(String s) {
if(s == null || s.length() == 0) {
return 0;
}
int result = 0;
HashMap map = new HashMap<>();
map.put('I',1);
map.put('V',5);
map.put('X',10);
map.put('L',50);
map.put('C',100);
map.put('D',500);
map.put('M',1000);
for(int i = s.length() - 1;i >= 0 ;i--) {
if(i >= 1 && s.charAt(i) == 'V'&& s.charAt(i - 1) == 'I') {
result += 4;
i--;
}else if(i >= 1 && s.charAt(i) == 'X' && s.charAt(i - 1) == 'I'){
result += 9;
i--;
}else if(i >= 1 && s.charAt(i) == 'L' && s.charAt(i - 1) == 'X') {
result += 40;
i--;
}else if(i >= 1 && s.charAt(i) == 'C' && s.charAt(i - 1) == 'X') {
result += 90;
i--;
}else if(i >= 1 && s.charAt(i) == 'D' && s.charAt(i - 1) == 'C') {
result += 400;
i--;
}else if(i >= 1 && s.charAt(i) == 'M' && s.charAt(i - 1) == 'C') {
result += 900;
i--;
}else {
result += map.get(s.charAt(i));
}
}
return result;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
그림 의 유 니 버 설 데이터 구조텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.