Advertisement
evgenibatev

Roman2Integer x2

May 19th, 2024
578
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.50 KB | None | 0 0
  1. class Solution {
  2.     public int romanToInt(String s) {
  3.         Map<Character, Integer> romanToInteger = Map.of(
  4.             'I', 1,
  5.             'V', 5,
  6.             'X', 10,
  7.             'L', 50,
  8.             'C', 100,
  9.             'D', 500,
  10.             'M', 1000
  11.         );
  12.  
  13.         int result = 0;
  14.  
  15.         for (int i = 0; i < s.length(); i++) {
  16.  
  17.             Character c = s.charAt(i);
  18.             Character cNext = Character.MIN_VALUE;
  19.             boolean shouldSubtract = false;
  20.             if (i+1 < s.length()) {
  21.  
  22.                 cNext = s.charAt(i+1);
  23.                 switch(c) {
  24.                     case 'I':
  25.                         if (cNext == 'V' || cNext == 'X') {
  26.                             shouldSubtract = true;
  27.                         }
  28.                         break;
  29.                     case 'X':
  30.                         if (cNext == 'L' || cNext == 'C') {
  31.                             shouldSubtract = true;
  32.                         }
  33.                         break;
  34.                     case 'C':
  35.                         if (cNext == 'D' || cNext == 'M') {
  36.                             shouldSubtract = true;
  37.                         }
  38.                         break;
  39.                 }
  40.             }
  41.  
  42.             if (shouldSubtract) {
  43.                 result += (romanToInteger.get(cNext) - romanToInteger.get(c));
  44.                 i++;
  45.             }
  46.             else {
  47.                 result += romanToInteger.get(c);
  48.             }
  49.         }
  50.         return result;
  51.     }
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement