1. 程式人生 > >Roman to Integer 羅馬數字轉阿拉伯數字@LeetCode

Roman to Integer 羅馬數字轉阿拉伯數字@LeetCode

思路:

從前往後遍歷羅馬數字,如果某個數比前一個數小,則把該數加入到結果中;
反之,則在結果中兩次減去前一個數並加上當前這個數;

package Level2;

/**
 * Roman to Integer  
 *
 * Given a roman numeral, convert it to an integer.

Input is guaranteed to be within the range from 1 to 3999.
 */
public class S13 {

	public static void main(String[] args) {

	}

	//羅馬數字轉阿拉伯數字:  
    // 從前往後遍歷羅馬數字,如果某個數比前一個數小,則把該數加入到結果中;  
    // 反之,則在結果中兩次減去前一個數並加上當前這個數;  
    // I、V、X、   L、   C、     D、     M  
    // 1.5、10、50、100、500、1000 
	public int romanToInt(String s) {
		int graph[] = new int[400];  
        graph['I'] = 1;  
        graph['V']=5;  
        graph['X']=10;  
        graph['L']=50;  
        graph['C']=100;  
        graph['D']=500;  
        graph['M']=1000;  
          
        char[] num = s.toCharArray();  
          
        // 遍歷這個數,用sum來總計和  
        int sum = graph[num[0]];  
          
        for(int i=0; i<num.length-1; i++){  
            // 如果,i比i+1大的話,直接相加  
            if(graph[num[i]] >= graph[num[i+1]]){  
                sum += graph[num[i+1]];  
            }  
            // 如果i比i+1小的話,則將總和sum減去i這個地方數的兩倍,同時加上i+1  
            // 就相當於後邊的數比左邊的數大,則用右邊的數減左邊的數  
            else{  
                sum = sum + graph[num[i+1]] - 2*graph[num[i]];  
            }  
        }  
          
        return sum;  
    }
}
public class Solution {
    public int romanToInt(String s) {
        int[] map = new int[256];
        map['I'] = 1;
        map['V'] = 5;
        map['X'] = 10;
        map['L'] = 50;
        map['C'] = 100;
        map['D'] = 500;
        map['M'] = 1000;
        
        char[] cc = s.toCharArray();
        int sum = map[cc[0]];
        for(int i=0; i<cc.length-1; i++){
            if(map[cc[i]] >= map[cc[i+1]]){
                sum += map[cc[i+1]];
            }else{
                sum = sum + map[cc[i+1]] - 2*map[cc[i]];
            }
        }
        return sum;
    }
}


相關推薦

Roman to Integer 羅馬數字阿拉伯數字@LeetCode

思路:從前往後遍歷羅馬數字,如果某個數比前一個數小,則把該數加入到結果中;反之,則在結果中兩次減去前一個數並加上當前這個數;package Level2; /** * Roman to Integer * * Given a roman numeral, conv

LeetCode Roman to Integer 羅馬數字阿拉伯數字

Roman to Integer Given a roman numeral, convert it to an integer. Input is guaranteed to be within t

leetcode Roman to Integer羅馬數字阿拉伯數字

羅馬數字規則: 1, 羅馬數字共有7個,即I(1)、V(5)、X(10)、L(50)、C(100)、D(500)和M(1000)。 羅馬數字中沒有“0”。 2, 重複次數:一個羅馬數字最多重複3次。

LeetCode 13.Roman to Integer (羅馬數字整數)

題目描述: 羅馬數字包含以下七種字元:I, V, X, L,C,D ,M。 符 數值 I 1 V 5 X 10 L 50 C 100

[LeetCode]13. Roman to Integer羅馬數字整數

instead placed man for sym () 兩種 字符 together Roman numerals are represented by seven different symbols: I, V, X, L, C, D and M. Symbol

leetcode】#陣列【Python】13. Roman to Integer 羅馬數字整數

連結: 題目: 給定一個羅馬數字,將其轉換成整數。輸入確保在 1 到 3999 的範圍內。 示例 1: 輸入: “III” 輸出: 3 示例 2: 輸入: “IV” 輸出: 4 示例 3: 輸入

Roman to Integer 羅馬數字整數

羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C 100 D

LeetCode 13. Roman to Integer羅馬數字阿拉伯數字

Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 方法:理解羅馬數字。 public class S

LeetCode--Roman to Integer 羅馬數字轉化成整數

題目:Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 羅馬數轉化成數字問題,我們需要對於羅馬數字很

[LeetCode]13. Roman to Integer(羅馬數字轉化為整數)

13. Roman to Integer 點選檢視相關題 整數轉化為羅馬數字 Given a roman numeral, convert it to an integer. Input is guaranteed to be within the ran

羅馬數字阿拉伯數字

public class Main { public static void main(String[] args) { System.out.print

Roman to Integer 羅馬數字轉化成整數

題目:https://leetcode.com/problems/roman-to-integer/description/ Given a roman numeral, convert it to an integer. Input is guaranteed t

leetcode-13-羅馬數字整數(roman to integer)-java

題目及測試 package pid013; /*羅馬數字轉整數 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L

LeetCode : 13. 羅馬數字整數(Roman To Integer)解答

13. 羅馬數字轉整數 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5

LeetCode】#13羅馬數字整數(Roman to Integer)

【LeetCode】#13羅馬數字轉整數(Roman to Integer) 題目描述 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 例如, 羅馬數字 2 寫做 II ,即為兩

LeetCode 13. 羅馬數字整數 Roman to Integer(C語言)

題目描述: 羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X

[LeetCode]羅馬數字整數(Roman to Integer

題目描述 羅馬數字包含以下七種字元:I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C

LeetCode——羅馬數字整數(Roman to Integer

羅馬數字包含以下七種字元: I, V, X, L,C,D 和 M。 字元 數值 I 1 V 5 X 10 L 50 C 100 D

LeetCode OJ 之 Roman to Integer羅馬數字十進位制)

題目: Given a roman numeral, convert it to an integer.(給定一個羅馬數字,把它轉換成十進位制數字) Input is guaranteed to be within the range from 1 to 3999.(

分析、測試與總結:羅馬數字阿拉伯數字的轉換[roman to integer and integer to roman in c++]

【本文連結】 【題目】 給出一個羅馬數字,轉換為阿拉伯數字。本題只考慮3999以內的數。 羅馬數字有如下符號: Ⅰ(1)Ⅴ(5)Ⅹ(10)L(50)C(100)D(500)M(1000) 計數規則: (1).若干相同數字連寫表示的數是這些羅馬數字的和,如III=3; (2).小數字在大數字