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에 따라 라이센스가 부여됩니다.