leetcode: 13, 로마 숫자 는 다음 과 같은 7 가지 문 자 를 포함한다. I, V, X, L, C, D 와 M.

1. 제목: 13. 로마 숫자 는 다음 과 같은 7 가지 문 자 를 포함한다. I, V, X, L, C, D 와 M.제목 링크
              
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;
    }
}

좋은 웹페이지 즐겨찾기