羅馬數字轉成整數

原題

  Given a roman numeral, convert it to an integer.
  Input is guaranteed to be within the range from 1 to 3999.spa

題目大意

  給定一個羅馬數字,將其轉換成對應的整數。
  輸入的數字在1-3999之間。code

解題思路

  根據羅馬數字與整數數字對應關係進行加法操做,若是前一個數字比後一個大就相減,不然進行相加。it

代碼實現

public class Solution {
    public int romanToInt(String s) {

        int result = 0;
        int prev = 0; // 記錄前一個數字的值

        for (int i = s.length() - 1; i > -1; i--) {
            switch (s.charAt(i)) {
                case 'I': // 1
                    if (1 < prev) {
                        result -= 1;
                    } else {
                        result += 1;

                    }
                    prev = 1;
                    break;

                case 'V': // 5

                    if (5 < prev) {
                        result -= 5;
                    } else {
                        result += 5;
                    }

                    prev = 5;

                    break;
                case 'X': // 10
                    if (10 < prev) {
                        result -= 10;
                    } else {
                        result += 10;
                    }

                    prev = 10;
                    break;
                case 'L': // 50
                    if (50 < prev) {
                        result -= 50;
                    } else {
                        result += 50;
                    }

                    prev = 50;
                    break;
                case 'C': // 100
                    if (100 < prev) {
                        result -= 100;
                    } else {
                        result += 100;
                    }

                    prev = 100;
                    break;
                case 'D': // 500
                    if (500 < prev) {
                        result -= 500;
                    } else {
                        result += 500;
                    }

                    prev = 500;
                    break;
                case 'M': // 1000
                    result += 1000;
                    prev = 1000;
                    break;
            }
        }

        return result;
    }
相關文章
相關標籤/搜索